Ikke -bestemmende programmering - Nondeterministic programming

Et ubestemt programmeringssprog er et sprog, der på bestemte punkter i programmet (kaldet "valgpunkter") kan angive forskellige alternativer til programflow . I modsætning til en if-then-erklæring er metoden til valg mellem disse alternativer ikke direkte specificeret af programmøren; programmet skal beslutte på løbetid mellem alternativerne, via en generel metode, der anvendes på alle valgpunkter. En programmør angiver et begrænset antal alternativer, men programmet skal senere vælge mellem dem. ("Vælg" er faktisk et typisk navn for den ikke-deterministiske operator.) Der kan dannes et hierarki af valgpunkter, hvor valg på højere niveau fører til grene, der indeholder valg på lavere niveau inden for dem.

En valgfri metode er nedfældet i backtracking -systemer (f.eks. Amb eller forening i Prolog ), hvor nogle alternativer kan "mislykkes", hvilket får programmet til at backtrack og prøve andre alternativer. Hvis alle alternativer mislykkes på et bestemt valgpunkt, mislykkes en hel gren, og programmet vil gå tilbage til et ældre valgpunkt. En komplikation er, at fordi ethvert valg er foreløbigt og kan laves om, skal systemet være i stand til at gendanne gamle programtilstande ved at fortryde bivirkninger forårsaget af delvis udførelse af en filial, der til sidst mislykkedes.

En anden valgmulighed er forstærkningslæring, der er nedfældet i systemer som Alisp . I sådanne systemer, snarere end backtracking, holder systemet styr på et vist mål for succes og lærer, hvilke valg der ofte fører til succes, og i hvilke situationer (både intern programtilstand og miljøinput kan påvirke valget). Disse systemer er velegnede til applikationer til robotteknologi og andre domæner, hvor backtracking indebærer forsøg på at fortryde handlinger, der udføres i et dynamisk miljø, hvilket kan være svært eller upraktisk.

Se også

Referencer