Методи Кристобал Хунта

- Скъпа моя, - каза Фьодор Симеонович тревожно, след като разбира, почерка. - Това е един и същ проблем Бен Betsalelya. Калиостро също доказа, че няма решение.

- Ние сме наясно, че няма решение, - Хунтата каза oschetinivayas веднага. - Искаме да знаем как да го решим.

- Колко странно говорите, Христо ... Как да търсим решение, когато не е? Глупости вид ...

- Съжалявам, Теодор, но че вие ​​сте много странна причина. Глупости - за намиране на решение изглежда, ако това е така. Ние говорим за това как да се справят с проблема, че няма решение. Това е дълбоко фундаментален въпрос ...

Какво е правилно и какво не е наред Кристобал Hozevich? правило

Разбира се, от гледна точка на по-високо знание права Кристобал Хунта: защо да се реши проблема решими, ако ние вече знаем, че има решение? Но ние не трябва да забравяме, че той - безсмъртната най-висок клас магьосник, бивш Grand инквизитор и така нататък и така нататък. Той вече знае как да кликнете елементарни проблеми, както и много от задачите, които не са достъпни за вас, са елементарни за него. И трябва да участват в конкурси и състезания, проучване и след това работата на работното място, където по-голямата част от проблемите е решим (особено в традиционните състезания други и не дават). Така че да се знае начините за решаване на тези проблеми и да бъдат в състояние да прилага подходящи алгоритми - от съществено значение знания и умения за тези, които искат да бъдат над "чайник" по компютърни науки.

Професионални и понякога се сблъскват с напълно различна ситуация. Той зададе цел, която очевидно е нерешим. Но е необходимо да се реши (това е само един от многото подобни случаи в реалния живот: прочетете книгата [1].

Първият начин: по-рано, за да го направим Edit

Да приемем, че сте поставили задачата да се изгради една програма, която ще провери дали фиксираните програми, създадени с помощта на нова система за програмиране, за всяко конкретно приложение (например, нов скриптов език за кучета нашийници). След това е необходимо първо да се разбере кой клас на програмата и ще напиша на тази система, тъй като, както е описано в предишната статия, проблемът като цяло не може да се реши. Ако програмата не е твърде трудно, достатъчно е само изхвърли създаден програмиране мини-език, докато линии и рекурсивни процедури (които, ако не е изрично възрази, системни програмисти за общността и по склона изисква да ги постави в, защото "в противен случай системата няма да бъде универсален"). След това всяка програма ще довърши работата си (само за изграждането ние не й даде възможност да се заяжда!). Ако системи анализатори крещящи, а главите ги разглежда като полубогове, след това да ги стигнем до най-малко да издаде предупреждение за програмисти дълго тип:

И след като отговорите Да допълнение повече (в най-добрите традиции на играта, от които искате да отидете бързо на шефа или майката или учителят не е хванат и да ти задам един много въпроси):

И като краен акорд нещо като:

Предоставеният решение е специален случай на трите общи принципа.

Принцип 1 от регламента

Ако не можете да решите проблема в неговата цялост, да разбере какво е наистина необходимо, и изберете конкретна задача.

Принцип 2 Edit

Ако нещо трябва да бъде гарантирана за решението, най-добрият начин - да се гарантира, че от самото начало, дори и по време на изграждането на програмата. Тогава дори се тества, че ще бъде трудно, и ако се окаже, повече, освен това, че изискването е нарушил римейка ще бъде още по-трудно, отколкото за написването на добра веднага. [2]

Принцип 3 Редактиране

Ако не сте в състояние да блокира неразумно решение, с помощта на технически и бюрократични подробности направи това, за да го използвате, за да бъде толкова неприятна, колкото е възможно. [3]

Този начин на решаване на неразрешими проблеми може да се илюстрира със следната фигура.

Какво страна на оградата - нашите култивирани растения, така и извън всички считат плевели и там ние просто не слагайте.

Вторият метод е да се ограничи задача Редактиране

Принцип 1 по-горе води директно до още един метод за решаване, в действителност неразривно свързани с предишното, но не се редуцират до него. По-специално, ако същото предаване за кучета нашийници вече са написани, или писмено завърши хакерски атаки, които най-малко разчитат на главата му teshi, но стръмнината, че няма да се откаже, той остава да разгледаме този конкретен набор от програми и изграждане на алгоритъм, който ще работи по-специално върху него [4]. Основното нещо, което ви алгоритъм успешно потърси грешка в специфичните програми, както и че по принцип е неправилно, трябва да се разглежда като необходимо зло.

Например, ако забележите, че програмистите често задават въпроси на същия сензор, а не повтарят измерванията, като грешка може успешно да се изравнят и да докладва за това, например, както следва:

Схематично може да бъде представен този начин на работа на следващата фигура. Фактът, че зад бодливата тел по дефиниция се счита за лош и стреля.

Третият начин: за да работи правилно Редактиране

Тъй като неразтворим проблемът все още не може да бъде решен правилно, е необходимо да се анализира какви са вредните грешки, и ако ние направим нещо безобидно. В предишните части приеме, че безвредни находка колоездене, отколкото намирането на линия в текущата програма. Но понякога е по-добре да се даде прекалено много предупреждение, отколкото да пропусне пословично лошо алгоритъм. Освен това, понякога може да прави грешки, и в двете страни, ако цената на провала не е много висока и в повечето случаи, програмата ще продължи да работи правилно.

Схематично може да бъде представен този начин на работа на следващата фигура. Тук на границата се извършва по-лесно, но в близост до него може да бъде грешки в двете страни.

Ако една линия се случва в рамките на рекурсия, или рекурсивно в цикъла, процедурата е написано правилно.

В повечето случаи, това правило не посочва недобре обмислени процедури, дори и да е работил за много прости входове, попадащи малко по-сложна. Но понякога тази техника е оправдано (лично аз ви съветваме да не използвате такъв прием, ако искате да се пресече цикълът и рекурсия, а след това почти сигурно ще лошо проектирани структурата на данните или алгоритъм).

Четвъртият метод: случайна работа Редактиране

Програмите за най-често срещаните софтуерни тест се опитват да се отърват от програмата на набор от избрани тестове, които са изглеждали да се осигури преминаване на всички възможни начини на изпълнение на програмата. Но възможните начини твърде много, така че тестовете са избрани да отидат различни начини, а често и на случаен принцип.

По същия начин, един от начините за употреба програма за тестване - генериране на случайни данни и проверка как програмата ще се държат с тях.

В действителност, тези методи са без теоретична мотивиран, която за първи път е забелязал Trakhtenbrot в гореспоменатия доклад. Често нерешим проблем става сравнително лесно, ако позволим наред с малка вероятност (по принцип дори произволно малък).

Стратегическото шах Две шах общуват чрез съдията. Съдията е единственият, който знае пълната позицията на дъската. Всеки играч знае само баланса на силите и положението на неговите парчета.

Съдия казва играчи отношение на минимално необходимата информация за курса. Той говори за последователност от фрази в отговор на опитите на един от играчите, за да направи ход (това е черно или бяло, предполагам себе си):

- Напредък. Взети топа на поле е1. Пешка стана кралица. Шах.

Първият възможен Курсът се счита за извършено. Причината, поради която не е възможно, разбира се (отваря Шах, ред блокиран, царят отиде под атака и други подобни), не се обяснява. Стратегическо Шах генерира редица интересни проблеми, някои от които (един от тях е по-лесно, а вторият - изключително сложно), която представяме днес:

Поп-дама срещу изперкал

King знае всичко, а кралят и кралицата да играе срещу него в съответствие с правилата на стратегически шах. Писане мат.

King изперкал срещу топа

King знае всичко, и на царя и топа играе срещу него в съответствие с правилата на стратегически шах. Писане мат.

Във втория проблем просто даде алгоритъм и напише програма, която ще произволно matovat крал, така че с вероятност 1 в крайна сметка му zamatuet (но теоретично царя, ако той не е само мъдър човек, но също така и пророк, знаейки бъдеще, може да бъде безкрайно избягва мат). Налице е също така един алгоритъм matuyuschy с гаранция, но тя е много по-трудно, и в разработването и изпълнението.

^ Този принцип не може да се приложи практиката на традиционните състезания по програмиране. Определено има задача трябва да бъде решен в пълен размер, така че тя да работи на всички стойности на допустимите параметри. Това е само един от многото случаи, в които практиката на конкуренция води до развитието на умения, които са не само безполезни, но направо вредни за последваща професионална практика.

^ Това всъщност е общ принцип, който се прилага не само в програмирането. Тъй като е необходимо да се направи в живота си. Струва си да припомним, че "умен човек. - онзи, който с чест от тази ситуация, в която мъдрият не попада"

^ Последният принцип (със замяната на "неприемлива" на "ненужни ми любим") е била използвана успешно в борбата срещу бюрократите на всичко най-добро; Понякога е необходимо да се приемат методите си, тъй като изкачване до фронтална атака - почти винаги най-лошото решение.

* Въпреки че са стръмни, но обикновено малко изобретателен в действителност, и най-важното, както е посочено в класическата руска водевил, този тип обикновено са грешни "Kazhinny eftom време на място."