BFS vs DFS, útmutató arról, hogy melyik algoritmust érdemes használni a projektedhez

Ebben a történetben a mesterséges intelligencia és a neurális hálózatok alapjául szolgáló két általánosan használt algoritmust fogom összehasonlítani, nevezetesen a depth-first-search és a breadth-first-search algoritmusokat. Ha még nem érted ezt a két algoritmust, nézd meg a többi cikkemet egy 5 perces oktatásért, és máris megértheted őket.

DFS:https://medium.com/@tingyan.deng/depth-first-search-short-tutorial-165b41f1b1c0

BFS:https://medium.com/@tingyan.deng/breadth-first-search-short-tutorial-a1ceb78b0c11

a DFS és BFS animált ábrázolása

Először is, mindkettő informált keresési algoritmus, ami azt jelenti, hogy nyers erővel működnek, és nincs további információjuk az állapotról vagy a keresési térről azon kívül, hogy hogyan kell a fát bejárni. Ha olvastad a korábbi DFS-ről vagy BFS-ről szóló cikkeimet, akkor tudod, hogy egyik sem nézi meg az egyes lépések súlyát a keresési folyamat során.

  • Futtatási idő:
  • mikor DFS>BFS: Ha a keresett csomópont nagyon mélyen van, vagy több olyan célcsomópont van, ami elég mélyen van, akkor a DFS-t kell használnunk. Ebben az esetben a BFS-nek minden fenti csomópontot meg kell látogatnia, mielőtt a mélyen lévő csomópontokat meglátogatná, ami túl sok időt vesz igénybe.
  • mikor BFS>DFS: A BFS használható egyetlen forrásból származó legrövidebb út megtalálására súlyozatlan gráfban, mert a BFS-ben a forráscsomópontból minimális számú éllel érjük el a csúcsot. Ezzel szemben a DFS-ben több élen is áthaladhatunk, hogy egy forrásból elérjünk egy célcsúcsot.
  • keresés típusa: Mindkettő tájékozatlan keresés
  • memória összehasonlítás:
  • adatszerkezet: A BFS több memóriát vesz igénybe, mert többet kell visszafelé haladnia, mint a DFS-nek általában.
  • adatszerkezet: A DFS egy vermet használ, amely a gyökértől a keresett csomópontig tartalmazza a csomópontokat. A BFS egy várólistát használ, amely a keresés elején lévő csomópontokat tartalmazza.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.