Ця стаття не містить . (липень 2013) |
В інформатиці, недетермінований алгоритм це алгоритм, який передбачає декілька шляхів обробки одних і тих самих вхідних даних, без будь-якого уточнення який саме варіант буде обраний.
Використання
Часто в теорії алгоритмів, термін «algorithm» вказує на детермінований алгоритм. Недетермінований алгоритм відрізняється від свого відомішого двійника можливістю отримання результату декількома різними шляхами. Детермінований алгоритм передбачає єдиний шлях від вхідних даних до виходу, тоді як деякі шляхи виконання недетермінованого алгоритму можуть привести до однакового результату, а деякі до особливих результатів. Ці властивості описано математично в «недетермінованій» моделі обчислень, відомій як недетермінований автомат.
В розробці алгоритмів, недетерміновані алгоритми часто використовуються, коли задача, що розв'язується за допомогою алгоритму за своєю суттю дозволяє багато виходів (або коли існує один вихід з багатьма шляхами через які він може бути знайдений, при чому всі шляхи однаково добрі). Важливо, що кожен вихід недетермінованого алгоритму правильний, незалежно від шляхів обраних алгоритмом під час виконання.
У теорії складності обчислень, недетермінований алгоритм є таким, що на кожному можливому кроці може бути декілька продовжень (уявіть людину, що простує лісом, кожного кроку вона повинна вирішити, який шлях їй обрати далі). Такі алгоритми не видають розв'язок для кожного шляху обчислень; однак, вони гарантують отримання вірного розв'язку певним шляхом (наприклад, людина, що простує лісом може знайти свою хату, якщо обере певну комбінацію правильних шляхів). Вибори можна тлумачити припущення в процесі пошуку.
Велика кількість задач може бути осмислена через недетерміновані алгоритми, включно з найвідомішими нерозв'язаними питаннями в теорії обчислень, P = NP.
Реалізація недетермінованого алгоритму за допомогою детермінованого
Одним шляхом відтворення недетермінованого алгоритму N із детермінованим алгоритмом D це трактувати набір станів алгоритму N як стани D. Тобто D одночасно відслідковує всі можливі шляхи виконання N (дивись для використання цього прийому для скінченного автомата).
Другий шлях це ймовірнісний алгоритм. Результат називається ймовірнісний детермінований алгоритм.
Приклади
Приклад 1: Список покупок
Уявімо список покупок: список товарів для покупки.
Це можна осмислити двома способами:
- Як вказівку купити всі ці товари в будь-якому порядку. Це недетермінований алгоритм.
- Як вказівку купити всі ці товари в даному порядку. Це детермінований алгоритм.
Приклад 2: Сортування злиттям
Припустимо ми маємо набір речей (скажімо, 300 студентських робіт), які необхідно відсортувати (скажімо, за номерами студентів).
Один з алгоритмів для цього (що зветься сортування злиттям) наступний:
- розбити набір на дві приблизно рівних частини
- відсортувати обидві половини сортуванням злиттям (тобто рекурсивно)
- злити результати
Елементи можуть бути унікально відсортовані, якщо критерій сортування завжди визначає повний порядок; тобто номери студентів унікальні, але якщо сортувати іспити за прізвищами студентів і два студенти мають однакове прізвище, результат сортування залишається невизначеним. В таких випадках, сортування злиттям завжди буде видавати один з можливих вірних впорядкувань, але який саме, залишається невідомим, тобто алгоритм недермінований.
Приклад 3: Кістякове (покривальне) дерево
На вході неорієнтований зв'язний граф. Неорієнтований граф це набір вершин які можуть бути або не бути з'єднані ребрами. графа містить підмножину його вершин і ребер. Граф з'єднує дві вершини, якщо можна пройти по ребрах з одної вершини до іншої. Шлях в графі це найменший підграф, що з'єднує дві його вершини. Граф є зв'язним якщо він з'єднує всі свої вершини.
Алгоритм: допоки ребро можна видалити так, що граф залишається зв'язним, видалити це ребро.
Вихід: кістякове (покривальне) дерево, це такий підграф, який є деревом, що з'єднує всі вершини.
Кожен граф (який є зв'язним і не є деревом) має кілька кістякових дерев, тобто ми знов маємо приклад коли задача за своєю суттю дозволяє декілька вірних розв'язків, і обраний алгоритм видає один з них, але навряд чи ці розв'язки повторюватимуться.
Приклад 4: Тест простоти
Задача: дане натуральне число більше від одиниці, визначити чи є це число простим.
Недетерміністичний алгоритм наступний:
- Взяти будь-яке ціле k таке, що 2 ≤ k ≤ √(n).
- Якщо k є дільником n, зупинитись з відповіддю ні; інакше зупинитися з відповіддю не відомо.
Видно, що алгоритм не завжди дає корисну відповідь, але ніколи не дає хибної відповіді.
Цей алгоритм недетермінований, він видає повну відповідь не завжди, а тільки при певній комбінації виборів. Це є прикладом пошукового типу недетермінованого алгоритму.
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno lipen 2013 V informatici nedeterminovanij algoritm ce algoritm yakij peredbachaye dekilka shlyahiv obrobki odnih i tih samih vhidnih danih bez bud yakogo utochnennya yakij same variant bude obranij VikoristannyaChasto v teoriyi algoritmiv termin algorithm vkazuye na determinovanij algoritm Nedeterminovanij algoritm vidriznyayetsya vid svogo vidomishogo dvijnika mozhlivistyu otrimannya rezultatu dekilkoma riznimi shlyahami Determinovanij algoritm peredbachaye yedinij shlyah vid vhidnih danih do vihodu todi yak deyaki shlyahi vikonannya nedeterminovanogo algoritmu mozhut privesti do odnakovogo rezultatu a deyaki do osoblivih rezultativ Ci vlastivosti opisano matematichno v nedeterminovanij modeli obchislen vidomij yak nedeterminovanij avtomat V rozrobci algoritmiv nedeterminovani algoritmi chasto vikoristovuyutsya koli zadacha sho rozv yazuyetsya za dopomogoyu algoritmu za svoyeyu suttyu dozvolyaye bagato vihodiv abo koli isnuye odin vihid z bagatma shlyahami cherez yaki vin mozhe buti znajdenij pri chomu vsi shlyahi odnakovo dobri Vazhlivo sho kozhen vihid nedeterminovanogo algoritmu pravilnij nezalezhno vid shlyahiv obranih algoritmom pid chas vikonannya U teoriyi skladnosti obchislen nedeterminovanij algoritm ye takim sho na kozhnomu mozhlivomu kroci mozhe buti dekilka prodovzhen uyavit lyudinu sho prostuye lisom kozhnogo kroku vona povinna virishiti yakij shlyah yij obrati dali Taki algoritmi ne vidayut rozv yazok dlya kozhnogo shlyahu obchislen odnak voni garantuyut otrimannya virnogo rozv yazku pevnim shlyahom napriklad lyudina sho prostuye lisom mozhe znajti svoyu hatu yaksho obere pevnu kombinaciyu pravilnih shlyahiv Vibori mozhna tlumachiti pripushennya v procesi poshuku Velika kilkist zadach mozhe buti osmislena cherez nedeterminovani algoritmi vklyuchno z najvidomishimi nerozv yazanimi pitannyami v teoriyi obchislen P NP Realizaciya nedeterminovanogo algoritmu za dopomogoyu determinovanogoOdnim shlyahom vidtvorennya nedeterminovanogo algoritmu N iz determinovanim algoritmom D ce traktuvati nabir staniv algoritmu N yak stani D Tobto D odnochasno vidslidkovuye vsi mozhlivi shlyahi vikonannya N divis dlya vikoristannya cogo prijomu dlya skinchennogo avtomata Drugij shlyah ce jmovirnisnij algoritm Rezultat nazivayetsya jmovirnisnij determinovanij algoritm PrikladiPriklad 1 Spisok pokupok Uyavimo spisok pokupok spisok tovariv dlya pokupki Ce mozhna osmisliti dvoma sposobami Yak vkazivku kupiti vsi ci tovari v bud yakomu poryadku Ce nedeterminovanij algoritm Yak vkazivku kupiti vsi ci tovari v danomu poryadku Ce determinovanij algoritm Priklad 2 Sortuvannya zlittyam Pripustimo mi mayemo nabir rechej skazhimo 300 studentskih robit yaki neobhidno vidsortuvati skazhimo za nomerami studentiv Odin z algoritmiv dlya cogo sho zvetsya sortuvannya zlittyam nastupnij rozbiti nabir na dvi priblizno rivnih chastini vidsortuvati obidvi polovini sortuvannyam zlittyam tobto rekursivno zliti rezultati Elementi mozhut buti unikalno vidsortovani yaksho kriterij sortuvannya zavzhdi viznachaye povnij poryadok tobto nomeri studentiv unikalni ale yaksho sortuvati ispiti za prizvishami studentiv i dva studenti mayut odnakove prizvishe rezultat sortuvannya zalishayetsya neviznachenim V takih vipadkah sortuvannya zlittyam zavzhdi bude vidavati odin z mozhlivih virnih vporyadkuvan ale yakij same zalishayetsya nevidomim tobto algoritm nederminovanij Priklad 3 Kistyakove pokrivalne derevo Na vhodi neoriyentovanij zv yaznij graf Neoriyentovanij graf ce nabir vershin yaki mozhut buti abo ne buti z yednani rebrami grafa mistit pidmnozhinu jogo vershin i reber Graf z yednuye dvi vershini yaksho mozhna projti po rebrah z odnoyi vershini do inshoyi Shlyah v grafi ce najmenshij pidgraf sho z yednuye dvi jogo vershini Graf ye zv yaznim yaksho vin z yednuye vsi svoyi vershini Algoritm dopoki rebro mozhna vidaliti tak sho graf zalishayetsya zv yaznim vidaliti ce rebro Vihid kistyakove pokrivalne derevo ce takij pidgraf yakij ye derevom sho z yednuye vsi vershini Kozhen graf yakij ye zv yaznim i ne ye derevom maye kilka kistyakovih derev tobto mi znov mayemo priklad koli zadacha za svoyeyu suttyu dozvolyaye dekilka virnih rozv yazkiv i obranij algoritm vidaye odin z nih ale navryad chi ci rozv yazki povtoryuvatimutsya Priklad 4 Test prostoti Zadacha dane naturalne chislo bilshe vid odinici viznachiti chi ye ce chislo prostim Nedeterministichnij algoritm nastupnij Vzyati bud yake cile k take sho 2 k n Yaksho k ye dilnikom n zupinitis z vidpoviddyu ni inakshe zupinitisya z vidpoviddyu ne vidomo Vidno sho algoritm ne zavzhdi daye korisnu vidpovid ale nikoli ne daye hibnoyi vidpovidi Cej algoritm nedeterminovanij vin vidaye povnu vidpovid ne zavzhdi a tilki pri pevnij kombinaciyi viboriv Ce ye prikladom poshukovogo tipu nedeterminovanogo algoritmu Div takozhDeterminovanij algoritm Nedeterminovanij avtomat