Metodele Cristobal Junta

- draga mea, - a spus Fedor Simeonovich cu nerăbdare, după ce a înțeles scrisul. - Aceasta este aceeași problemă Ben Betsalelya. Cagliostro, de asemenea, a demonstrat că nu are nici o soluție.

- Suntem conștienți că nu are nici o soluție, - Junta a spus oschetinivayas imediat. - Vrem să știm cum să o rezolve.

- Ce ciudat să vorbești, Christo ... Cum de a căuta o soluție atunci când nu este? Prostii fel de ...

- Îmi pare rău, Theodore, dar că ești un motiv foarte ciudat. Prostii - să caute o soluție, dacă este așa. Este vorba despre modul în care să se ocupe de problema pe care nu are nici o soluție. Aceasta este o întrebare fundamentală profund ...

Ce este bine și ce este greșit Cristobal Hozevich? regulă

Desigur, din punctul de vedere al unei cunoștințe mai mari drepturi Cristobal Junta: de ce pentru a rezolva problema rezolvabile, dacă știm deja că are o soluție? Dar noi nu trebuie să uităm că el - nemuritoarea magicianul de clasă superioară, fost Mare Inchizitor și așa mai departe și așa mai departe. El știe deja cum să faceți clic pe problemele elementare, și multe dintre sarcinile care nu sunt disponibile pentru tine, sunt elementare pentru el. Și trebuie să participe la concursuri și competiții, de studiu și apoi locul de muncă la locul de muncă, în cazul în care marea majoritate a problemelor este rezolvabilă (în special în competițiile tradiționale și alte nu dau). Deci, pentru a cunoaște modalitățile de a rezolva aceste probleme și să fie capabil să pună în aplicare algoritmi adecvate - cunoștințe esențiale și abilități pentru cei care doresc să fie deasupra „ceainicul“ în informatică.

Profesională și, uneori, se confruntă cu o situație complet diferită. El a stabilit un obiectiv care este în mod evident de nerezolvat. Dar este necesar să se rezolve (acesta este doar unul dintre multele astfel de cazuri în viața reală: a citit cartea [1].

Primul mod: în avans pentru a obține dreptul Editare

Să presupunem că ai pus sarcina de a construi un program care va verifica dacă programele create cu ajutorul unui fixe cât nou sistem de programare pentru orice aplicație specială (de exemplu, un nou limbaj de scripting pentru gulere de câine). Apoi, trebuie să înțelegeți mai întâi ce nota de program se va scrie pe acest sistem, deoarece, așa cum sa discutat în articolul anterior, problema nu este, în general rezolvabile. În cazul în care programul nu este prea dificil, este suficient doar arunca creat o programare mini-limbaj în timp ce buclele și procedurile recursive (care, în cazul în care nu se opune în mod explicit, programatori de sistem pentru comunitate și panta necesară pentru a le pune în, pentru că „în caz contrar, sistemul nu va fi universală“). Apoi, fiecare program va termina treaba (doar pe constructia nu-i dau o șansă de a obține blocat!). În cazul în care analiștii sisteme țipând, iar capetele se uită la ei ca semizei, apoi să-i facă să emită cel puțin un avertisment pentru programatori de tip lung:

Și după ce am răspuns Da plus mai mult (în cele mai bune tradiții ale jocului, de la care doriți să mergeți rapid la seful sau mama sau profesorul nu este prins, și vă pun o mulțime de întrebări):

Și, ca o coardă ceva de finală cum ar fi:

Soluția furnizată este un caz special al celor trei principii generale.

Principiul 1 din Regulamentul

Dacă nu puteți rezolva problema în totalitate, să înțeleagă ceea ce este cu adevărat necesar, și să aleagă o anumită sarcină.

Principiul 2 Editare

În cazul în care trebuie să fie garantată ceva pentru decizie, cel mai bun mod - pentru a se asigura că de la început, chiar și în cursul construirii programului. Apoi, chiar și de testare va fi dificil, iar dacă se dovedește mai mult, în plus, că cerința a încălcat remake-ul va fi chiar mai dificilă decât a scrie un bun imediat. [2]

Principiul 3 Editare

Dacă nu reușiți să blocheze decizia neînțeleaptă, prin intermediul unor indicații tehnice și birocratice face acest lucru, să-l folosească pentru a fi cât urât posibil. [3]

Acest mod de a rezolva probleme greu de rezolvat poate fi ilustrat prin figura de mai jos.

Ce parte a gardului - plantele noastre cultivate, și în afara tuturor buruienilor luate în considerare și acolo noi pur și simplu nu a pus.

A doua metodă este de a limita sarcina Edit

Principiul 1 de mai sus conduce direct la mai mult o metodă de rezolvare, de fapt, indisolubil legată de cea anterioară, dar nu reductibilă la ea. În special, în cazul în care același program pentru gulere de câine au fost deja scrise, sau în scris a terminat încercare de hacking care cel puțin conta pe Teshi capul lui, dar prăvăliș nu vor renunța, rămâne să se uite la acest set special de programe și de a construi un algoritm care va lucra în mod specific pe ea [4]. Principalul lucru pe care algoritmul dvs. a căutat cu succes o eroare în programele specifice, și că este în general incorect, ar trebui să fie văzut ca un rău necesar.

De exemplu, dacă observați că programatorii interogheze de multe ori același senzor, nu măsurătorile repetate, o astfel de eroare se pot prinde cu succes și rapoarte în acest sens, de exemplu, după cum urmează:

Schematic, acesta poate fi reprezentat acest mod de lucru în figura de mai jos. Faptul că în spatele sârmă ghimpată, prin definiție, este considerat rău și trage.

A treia cale: de a lucra în mod corespunzător Editare

Având în vedere că problema insolubilă încă nu poate fi rezolvată în mod corespunzător, este necesar să se analizeze care sunt erorile dăunătoare, și, dacă facem ceva inofensiv. Secțiunile anterioare presupus că ciclismul găsi inofensiv decât găsirea unei bucle în programul de funcționare. Dar, uneori, este mai bine pentru a da prea mult de avertizare, decât să rateze algoritmul de notorietate rău. Mai mult, uneori, pot face greșeli, iar în cele două părți, în cazul în care costul de eșec nu este foarte mare și, în cele mai multe cazuri, programul va funcționa corect în continuare.

Schematic, acesta poate fi reprezentat acest mod de lucru în figura de mai jos. Aici frontiera efectuate mai ușor, dar aproape poate fi erori în cele două părți.

Dacă o buclă are loc în cadrul recursivitatea sau recurență în ciclu, procedura este scris corect.

În cele mai multe cazuri, această regulă nu indică un prost procedurile de gândire-out, chiar dacă au lucrat pentru intrări foarte simplu, care se încadrează un pic mai complex. Dar, uneori, această tehnică este justificată (personal, te sfătuiesc să nu folosească o astfel de recepție, dacă doriți să traverseze ciclul și recursivitate, atunci va fi aproape sigur prost proiectat structura de date sau algoritm).

A patra metodă: lucru aleatoare Editare

Programele de software de testare cele mai comune încercarea de a scăpa de program pe un set de teste selectate care au părut să asigure trecerea tuturor căile posibile de execuție a programului. Dar căile posibile prea mult, asa ca testele sunt selectate pentru a merge moduri diferite, și de multe ori aleatoare.

În mod similar, una dintre modalitățile de program de testare manuala - generarea de date aleatorii și verificarea modului în care programul se va comporta pentru ei.

De fapt, aceste metode sunt fără teoretice motivate, care a fost observat prima Trakhtenbrot în raportul menționat mai sus. De multe ori problema de nerezolvat devine destul de simplu, dacă permitem greșit cu o probabilitate scăzută (în principiu, chiar arbitrar mici).

Strategic de șah Două șah comunică prin intermediul judecătorului. Judecătorul este singurul care cunoaște poziția completă pe bord. Fiecare jucător știe doar balanța puterii și poziția pieselor sale.

Judecătorul spune jucătorilor la informațiile minime necesare legate de curs. El vorbește despre o secvență de fraze ca răspuns la încercările de către un jucător pentru a face o mutare (era negru sau alb, ghici-te):

- progresele realizate. Luate Tura pe teren e1. Pion a devenit o regină. Shah.

Primul curs posibil este considerată a fi făcută. Motivul pentru care nu este posibil, desigur, (se deschide Shah, linia blocat, regele a fost sub atac și altele) nu este explicată. Șah strategic genera o serie de probleme interesante, dintre care câteva (una dintre ele este mai simplu, al doilea - un extrem de complicat), prezentăm astăzi:

King-regina împotriva tocilar

Regele știe totul, iar regele și regina se joace împotriva lui în conformitate cu regulile de șah strategice. Scrierea mat.

Regele tocilar împotriva Rook

Regele știe totul, iar regele și turnul juca împotriva să-l în conformitate cu regulile de șah strategice. Scrierea mat.

În a doua problemă, pur și simplu da algoritmul și scrie un program care va matovat aleatoriu rege, astfel încât, cu probabilitate 1 în cele din urmă zamatuet sale (dar teoretic rege, dacă el nu este doar tip înțelept, dar, de asemenea, un profet, cunoscând pe viitor, pot fi evitate la nesfârșit mat). Există, de asemenea, un algoritm matuyuschy cu o garanție, dar este mult mai dificilă, precum și în dezvoltarea și punerea în aplicare.

^ Acest principiu nu poate fi aplicat la practica de concursuri de programare tradiționale. Există cu siguranță o sarcină trebuie să fie rezolvată în totalitate, astfel încât acesta a lucrat la toate valorile parametrilor admise. Acesta este doar unul dintre multele cazuri în care practica concurenței duce la dezvoltarea de competențe care nu sunt numai inutile, ci direct dăunătoare pentru practica profesională ulterioară.

^ Aceasta este de fapt un principiu general care se aplică nu numai în programarea. După cum este necesar să se facă în viață. Este demn de amintit faptul că „un om inteligent -. Cel care cu onoare din această situație, în care omul înțelept nu se încadrează“

^ Ultimul principiu (cu înlocuirea „nerezonabile“ la „inutile ma iubit“) a fost folosit cu succes în lupta împotriva birocraților din toate cele bune; Uneori este necesar să se adopte metodele lor, din moment ce urca la un atac frontal - aproape întotdeauna cea mai proasta solutie.

* Cu toate acestea sunt abrupte, dar, de obicei, puțin inventiv, de fapt, și cel mai important, după cum se menționează în Vodevilul rus clasic, astfel de tipuri sunt, de obicei greșit „Kazhinny eftom timp la fața locului.“