Ikke-bestemmende algoritme - Nondeterministic algorithm
I computerprogrammering er en ikke-deterministisk algoritme en algoritme, der, selv for den samme input, kan udvise forskellige adfærd på forskellige kørsler i modsætning til en deterministisk algoritme . Der er flere måder, en algoritme kan opføre sig forskelligt fra løb til løb. En samtidig algoritme kan udføre forskelligt på forskellige løbeture på grund af en løbetilstand . En sandsynlig algoritmes adfærd afhænger af en tilfældig talgenerator . En algoritme, der løser et problem i ikke-deterministisk polynomtid, kan køre i polynomisk tid eller eksponentiel tid afhængigt af de valg, den træffer under udførelse. De ikke-deterministiske algoritmer bruges ofte til at finde en tilnærmelse til en løsning, når den nøjagtige løsning ville være for dyr til at opnå ved hjælp af en deterministisk.
Begrebet blev introduceret af Robert W. Floyd i 1967.
Brug
Ofte i beregningsteori henviser udtrykket "algoritme" til en deterministisk algoritme . En ikke-bestemmende algoritme adskiller sig fra dens mere velkendte deterministiske modstykke i sin evne til at nå resultater ved hjælp af forskellige ruter. Hvis en deterministisk algoritme repræsenterer en enkelt sti fra et input til et resultat, repræsenterer en ikke-deterministisk algoritme en enkelt sti, der stammer ind i mange stier, hvoraf nogle kan komme til den samme output, og nogle af dem kan komme til unikke output. Denne egenskab er fanget matematisk i "ikke-bestemte" modeller for beregning, såsom den ikke-bestemte endelige automat . I nogle scenarier tillades alle mulige stier at køre samtidigt.
I algoritmedesign bruges ikke-deterministiske algoritmer ofte, når problemet løst af algoritmen iboende tillader flere resultater (eller når der er et enkelt resultat med flere stier, hvorved resultatet kan opdages, hver lige så foretrukket). Det afgørende er, at ethvert resultat, som den ikke-deterministiske algoritme producerer, er gyldigt, uanset hvilke valg algoritmen træffer under kørsel.
I beregningskompleksitetsteori er ikke-deterministiske algoritmer dem, der ved hvert muligt trin kan give mulighed for flere fortsættelser (forestil dig en person, der går ned ad en sti i en skov, og hver gang de træder videre, skal de vælge hvilken gaffel i vejen, de ønsker at tage). Disse algoritmer når ikke en løsning for alle mulige beregningsveje; dog er de garanteret at nå frem til en korrekt løsning på en sti (dvs. den, der går gennem skoven, finder muligvis kun deres hytte, hvis de vælger en kombination af "korrekte" stier). Valgene kan fortolkes som gætter i en søgningsproces .
Et stort antal problemer kan konceptualiseres gennem ikke-deterministiske algoritmer, herunder det mest berømte uløste spørgsmål i computingsteori, P vs NP .
Implementering af ikke-deterministiske algoritmer med deterministiske
En måde at simulere en nondeterministisk algoritme N ved anvendelse af en deterministisk algoritme D er at behandle sæt tilstande af N som stater i D . Dette betyder, at D samtidig sporer alle mulige eksekveringsveje for N (se powerset-konstruktion for denne teknik, der bruges til endelige automater ).
En anden er randomisering , som består i at lade alle valg bestemmes af en tilfældig talgenerator . Resultatet kaldes en sandsynlig deterministisk algoritme.
Se også
Referencer
Yderligere læsning
- Cormen, Thomas H. (2009). Introduktion til algoritmer (3. udgave). MIT Tryk. ISBN 978-0-262-03384-8 .
- "Ikke-bestemmende algoritme" . National Institute of Standards and Technology . Hentet 7. juli 2013 .
- "Ikke-deterministiske algoritmer" . New York University Computer Science . Hentet 7. juli 2013 .