Verschil tussen BFS en DFS Verschil tussen

Anonim

BFS versus DFS

Breadth First Search (ook bekend als BFS) is een zoekmethode die wordt gebruikt om alle knooppunten van een bepaalde grafiek. Het volbrengt deze taak door elke afzonderlijke oplossing te doorzoeken om deze knooppunten (of een combinatie van sequenties daarin) te onderzoeken en uit te breiden. Als zodanig gebruikt een BFS geen heuristisch algoritme (of een algoritme dat zoekt naar een oplossing via meerdere scenario's). Nadat alle knooppunten zijn verkregen, worden ze toegevoegd aan een wachtrij die bekend staat als de wachtrij Eerste in, Eerste uit. De knooppunten die niet zijn onderzocht, worden 'opgeslagen' in een container met de markering 'open'; eenmaal onderzocht worden ze getransporteerd naar een container met de aanduiding 'gesloten'.

Depth First Search (ook bekend als DFS) is een zoekmethode die zich verder in een kindknooppunt van een zoekopdracht nestelt totdat een doel is bereikt (of totdat er een knooppunt is zonder andere permutaties of ' kinderen'). Nadat een doel is gevonden, wordt de zoektocht teruggezet naar een eerder knooppunt dat met een oplossing is gegaan, waarbij het proces wordt herhaald totdat alle knooppunten met succes zijn doorzocht. Als zodanig worden knooppunten opzij gezet voor verdere verkenning - dit wordt niet-recursieve implementatie genoemd.

De kenmerken van de BFS zijn ruimte- en tijdcomplexiteit, volledigheid, bewijs van volledigheid en optimaliteit. Ruimtecomplexiteit verwijst naar de verhouding van het aantal knooppunten op het diepste niveau van een zoekopdracht. Tijdcomplexiteit verwijst naar de werkelijke hoeveelheid 'tijd' die wordt gebruikt voor het beschouwen van elk pad dat een knooppunt in een zoekopdracht zal nemen. Volledigheid is in wezen een zoekopdracht die een oplossing in een grafiek vindt, ongeacht wat voor soort grafiek het is. Het bewijs van de volledigheid is het laagste niveau waarop een doel in een knoop op een bepaalde diepte wordt gevonden. Ten slotte verwijst optimaliteit naar een BFS die niet wordt gewogen - dat is een grafiek die wordt gebruikt voor kosten per eenheidstap.

Een DFS is de meest natuurlijke uitvoer met behulp van een spanning tree - een boom die bestaat uit alle hoekpunten en enkele randen in een ongerichte grafiek. In deze formatie is de grafiek verdeeld in drie klassen: Voorwaartse randen, wijzend van een knooppunt naar een onderliggende knoop; achterranden, wijzend van een knooppunt naar een eerder knooppunt; en dwarsranden, die geen van beide doen.

Samenvatting:

1. Een BFS doorzoekt elke afzonderlijke oplossing in een grafiek om de knooppunten uit te breiden; een DFS graaft diep in een kindknoop totdat een doel is bereikt.

2. De kenmerken van een BFS zijn ruimte- en tijdcomplexiteit, volledigheid, bewijs van volledigheid en optimaliteit; de meest natuurlijke uitvoer voor een DFS is een spanningboom met drie klassen: voorranden, achterranden en dwarsranden.