深度優先搜尋

2021-07-13 02:36:20 字數 1623 閱讀 5102

深度優先搜尋演算法:

#ifndef dfs_h

#define dfs_h

#include #include "stdio.h"

#include using namespace std;

#define num 6

typedef struct _stnode

stnode;

stnode nodeary[num];

int color[num];a

stnode *par[num];

listgraph[num];

list::iterator itrlist;

void create();

void dfs();

void dfs_visit(stnode *node);

stnode *getnode(int i);

int getnodeindex(stnode *node);

void getsystime(time_t &time);

#endif

#include "dfs.h"

void create()

for(i = 0; i < num; i++)

graph[0].push_back(&nodeary[0]);

graph[0].push_back(&nodeary[1]);

graph[0].push_back(&nodeary[3]);

graph[1].push_back(&nodeary[1]);

graph[1].push_back(&nodeary[4]);

graph[2].push_back(&nodeary[2]);

graph[2].push_back(&nodeary[4]);

graph[2].push_back(&nodeary[5]);

graph[3].push_back(&nodeary[3]);

graph[3].push_back(&nodeary[1]);

graph[4].push_back(&nodeary[4]);

graph[4].push_back(&nodeary[3]);

graph[5].push_back(&nodeary[5]);

graph[5].push_back(&nodeary[5]);

}stnode *getnode(int i)

} return &nodeary[j];

}int getnodeindex(stnode *node)

void dfs() }}

void dfs_visit(stnode *node)

}*/stnode *cnode = 0;

while(!graph[pari].empty())

graph[pari].remove(cnode);

} color[pari] = 2;

}int main()

注釋部分使用了list的迭代器,但是會出現錯誤:error list iterator not incrementable

,這可能是由於迭代器在遞迴回退後使迭代器無法迭代。所以進行了修改。

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...

廣度優先搜尋,深度優先搜尋

深度優先搜尋 depth first search 簡稱dfs。最直觀的例子就是 走迷宮 廣度優先搜尋 每個頂點都要進出一遍佇列,每個邊也都會被訪問一次,所以 時間複雜度o v e 主要消耗記憶體的是visited prev陣列 queue佇列,所以 空間複雜度o v 深度優先搜尋 每條邊最多會被訪...

深度優先搜尋 廣度優先搜尋

深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 package com.neusoft.data.structure 深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 public class dfsbfs 初始化 邊 mmatrix new int vlen vlen for...