Zoek probleem - Search problem

In computationele complexiteitstheorie en berekenbaarheidstheorie , een zoekprobleem is een soort computationele problemen weergegeven door een binaire relatie . Als R een binaire relatie dat gebied ( R ) ⊆ Γ + en T is een Turing machine dan T berekent R als:

  • Indien x is zodanig dat er een y zodanig dat R ( x , y ) dan T aanvaardt x met uitvoer z zodat R ( x , z ) (er kunnen meerdere y en T hoeven slechts één voorbeeld daarvan)
  • Indien x is zodanig dat er geen y zodanig dat R ( x , y ) dan T verwerpt x

Intuïtief het probleem bestaat uit het vinden structuur "y" in object "x". Een algoritme wordt gezegd dat het probleem als ten minste één overeenkomstig structuur bestaat, en éénmaal voor deze structuur wordt gemaakt uitgang; anders het algoritme stopt met een geschikt vermogen ( "Object niet gevonden" of een boodschap dergelijke).

Dergelijke problemen treden frequent in grafentheorie , bijvoorbeeld, waar het zoeken grafieken voor structuren zoals bepaald matching , cliques , onafhankelijke set , etc. zijn onderwerpen van belang.

Merk op dat de grafiek van een deelfunctie een binaire relatie, en als T berekent een deelfunctie is er hoogstens één mogelijke vermogen.

Een relatie R kan worden gezien als een zoekprobleem, en Turingmachine wat overeenkomt R wordt ook gezegd te lossen. Elke zoektocht probleem heeft een overeenkomstige beslissing probleem , namelijk

Deze definitie kan worden gegeneraliseerd naar n -ary betrekkingen met elke geschikte codering waardoor meerdere snaren tot een streng worden gecomprimeerd (bijvoorbeeld door ze achtereenvolgens opsomming een scheidingsteken).

Definitie

Een zoektocht probleem wordt bepaald door:

een logische functie die ons vertelt of een bepaalde toestand is een doel staat
een afbeelding van een staat om een ​​reeks van nieuwe staten

Doelstelling

Zoek een oplossing wanneer een algoritme om een ​​probleem op te lossen, maar slechts een specificatie van wat een oplossing eruit ziet niet gegeven.

zoekmethode

  • Generic zoekalgoritme: gegeven een grafiek, start nodes, en het doel nodes, stapsgewijs paden vanaf het begin nodes te verkennen.
  • Handhaven van een grens van paden vanaf het begin knooppunt die zijn onderzocht.
  • Zoals search opbrengst, de grens expandeert in het onbekende knooppunten tot een doelknooppunt wordt aangetroffen.
  • De manier waarop de grens wordt uitgebreid bepaalt de zoekstrategie.
   Input: a graph,
       a set of start nodes,
       Boolean procedure goal(n) that tests if n is a goal node.
   frontier := {s : s is a start node};
   while frontier is not empty:
       select and remove path <n0, ..., nk> from frontier;
       if goal(nk)
           return <n0, ..., nk>;
       for every neighbor n of nk
           add <n0, ..., nk, n> to frontier;
   end while

Zie ook

Referenties

Dit artikel bevat materiaal van search probleem op PlanetMath , dat is gelicenseerd onder de Creative Commons Attribution / Share-Alike License .