예를 들어, 같은 체스 게임에서는 상상도 할 수 있습니다, 정신적으로 어떤 움직이십시오 틱택토 결정할 때는 상대의 대응 방안, 이동, 그런후에도 너회의 그런후에도 너회의 대응 방안과 드릴링됩니다. 어떻게 할 수 있는 가장 좋은 결과를 보고 결정할 수 있습니다) 가 이동할 수 있습니다.
일부 내용만 트리별 주관업체로 패스이므로 경기에서 이길 수 있습니다. 일부 이어질 때, 상대방이 이를 이겨야 합니다 같은 기간말 백업하십시오 이전 노드입니다 및 시도해보십시오 또는 백트랙, 다른 경로를. 이 방법을 사용하여 경로를 찾을 때까지 나무를요 살펴보았으므로 성공적인 "고 밝혔다. 그리고 이 경로를 따라 첫 번째 이동 할 수 있습니다.
너비 우선 탐색
너비 우선 탐색 () 는 이 흥미로운 속성: 먼저 한 다음, 멀리 있는 모든 정점 모서리까지 aspt 시작점이 있는 두 개의 모서리, 그리고 모든 정점 빼냅니다 드릴링됩니다. 이 때문에 최단 경로를 찾는 경우에는 시작 단계에서 특정 교점까지의 교점까지의. Bfs 시작할 때, 당신이 알고 있는 경로를 찾을 경우, 지정된 교점까지의, 지금까지 발견된 가장 짧은 경로를 는 노드입니다. 이 경우 최단 경로를 찾을 수 있을 것으로, BFS 이미.
너비 우선 탐색 찾는 이웃이 노드입니다 토렌트 p2p 네트워크를 사용할 수 있으며, GPS 시스템, 소셜 네트워킹 사이트 같은 위치를 찾을 수 있는 사람을 찾기 위한 거리 및 창조하셨노 지정한 것을 좋아한다.
깊이 있는 첫 번째 검색, 트리의 루트, 준수하십시오 시작한 선수단 중 분기로서의 노드입니다 또는 사용자가 찾고자 하는 발견될 때까지 최대한 멀리 인컨텍스트 쳐서 리프 노드 (node) 와 자녀는 없다). 그런 경우 리프 노드) 가 남아 있는 가장 가까운 조상 http://community. 계속할 수 있다.
>. 예를 들어, DFS
예를 들어 보겠습니다 뭐한테 DFS 참고하십시오. 이진 트리 순회 주문하십시오 리프 레벨 1 에서 작동합니까 게시물로의 시작할 것이라고 생각한다. 순서를 나타내는 숫자는 노드입니다 받을시간은 액세스됩니다 DFS:
Bfs 비교 및 DFS, 가장 큰 장점은 DFS 비해 훨씬 낮은 메모리 요구 조건을 갖췄다는 점도 BFS 있기 때문에 모든 자식 포인터를 저장하는 데 필요한 것은 각 레벨에서. 그리고 어떤 데이터에 따라 찾고 있고, DFS 또는 BFS 유리할 수 있다.
예를 들어, 패밀리 트리 주어진 경우 누가 살아 있는 사람을 찾고 있었는데, 그런 사람이 될 수 있는 안전한 solaris. 진단트리에서 약간만이라도 바닥에 진단트리 즉, BFS 매우 오랜 시간이 걸릴 것이라고 도달할 수 있는 마지막 수준. 그러나 목표를 찾을 것이라고 DFS 가속화합니다. 그러나 한 가족이 숨진 경우 찾고 있었는데, 그 사람이 아주 오래 전 약간만이라도 (closer to the top of the tree. 그런 다음, BFS DFS 보다 일반적으로 볼 수 있습니다. 따라서 데이터 및 너희는너희가 찾는 중 장이점이 따라 달라질 수 있습니다.
한 번 더 비유하사 페이스북. 프렌즈 (friends of 제안했다. 여기서 우리가 사용할 수 있는 친구들을 제안으로 BFS 즉시인지 필요하다. 최단 경로를 찾을 수 있습니다 (사용 반복) 또는 감지할 수 있는 사이클입니다 DFS 사용할 수 있습니다.
한 때 이 질문에 비호환성의 프로그래머용 팩터에서의 아웃해야 외곽진입 있다. # 39 는 re 사용하는 경우, 반복, 그리고 깊이 우선 탐색 you& 간단해진다는 # 39, t need to 추가로 구축할 수 있는 데이터 구조를 유지할 수 있기 때문에 don& 노드를 탐색할 수 있다.
39 에 대해 깊이 우선 탐색 here& 무방향성 you& # 39 의 경우, "이미 방문한" 정보를 저장하는 노드입니다 그래프화합니다 re:
def dfs(origin): # DFS from origin:
origin.visited = True # Mark the origin as visited
for neighbor in origin.neighbors: # Loop over the neighbors
if not neighbor.visited: dfs(next) # Visit each neighbor if not already visited
"이미 방문한" 정보를 저장하는 경우 별도의 데이터 구조:
def dfs(node, visited): # DFS from origin, with already-visited set:
visited.add(node) # Mark the origin as visited
for neighbor in node.neighbors: # Loop over the neighbors
if not neighbor in visited: # If the neighbor hasn't been visited yet,
dfs(node, visited) # then visit the neighbor
dfs(origin, set())
이와 함께 별도의 데이터 구조를 유지하는 데 필요한 곳에 대조합니다 너비 우선 탐색 목록니다 노드입니다 아직 dell., 아무리 생각해도.
예를 들어, BFS 위한 페이스북 고려해 볼 만하다. 우리가 받은 친구 추가 FB 에서 프로파일만을 제안에 다른 친구 프로파일입니다. 예를 들어, E, F, B, 동시에 A-> B-> B-> 대한 건의 사항을 얻을 수 있어야 하므로, E, f, BFS 인도되니 사용하여 두 번째 읽을 수 있는 수준이다.
DFS 를 기반으로 한 것이라는 시나리오가 더 많은 데이터를 기반으로 소스에서 타겟으로의 우리는 뭔가 싶다. 이미 언급한 바와 같이 대한 체스 또는 스도쿠.
나는 생각한다, 다른 한 가지는 슬라이드에서는 DFS 최단 경로를 커버할 수 있기 때문에 전체 경로 우선 사용해야 합니다 하나님이 결정할 수 있는 최고라니까요 DFS 그러나 BFS 사용할 수 있어 마치 greedy& # 39 의 외곽진입 최단 경로, 하지만 그 최종 결과가 다를 수 있습니다.
알려주세요 표시할지를 내 잘못 알고 있다.
첫 번째 검색 알고리즘을 breadth (BFS), 검색, 모든 이웃 노드 Breadth" " 변경분이 이름, through the out) 가 그 노드의 가장자리들을 방문하지 않은 이웃 등, 앞에서 언급한 이웃 통해 접속할 수 있는 모든 노드에 인도되니 아웃해야 가장자리들을 &solarisdvd 오리지오날 방문해 소스 (저희에게는힘과 계속할 수 있으면 다른 소스 및 시행하십시오 오리지오날 방문하지 않은 나머지 노드와 등). # 39 에 왜 that& 최단 경로를 찾는 데 사용할 수 있습니다 (있는지) 에서 노드 (오리지오날 소스) 의 경우 다른 노드로 급지합니다 모서리는 유니폼을 입게 됐다.
첫 번째 검색 (DFS),, Depth" " 알고리즘입니다 깊이까지의 변경분이 이름) 가 가장 최근에 발견된 노드입니다 x 통해 이웃 방문하지 않은 아웃해야 모서리입니다. 이 알고리즘은 x 에서 방문하지 않은 노드입니다 역 추적, 이웃이 없으면 검색할 수 있는 기호표 노드입니다 x 의 방문하지 않은 이웃 노드 (통해 아웃해야 가장자리들을) 에서 발견된 모든 노드에 인도되니 오리지오날 방문해 소스 등과 연결할 수 있다 (we 계속할 수 있으면 다른 소스 및 시행하십시오 오리지오날 방문하지 않은 나머지 노드와 등).
Bfs 및 DFS 모두 불완전한 수 있습니다. 예를 들어, 분기 계수를 노드입니다 제한이 없으므로, 매우 큰 자원 (메모리) 지원 (예를 들어 다음 노드를 검색할 수 저장할 때) 한 후, BFS 완료되지 않은 경우에도 검색할 수 있는 몇 가지 주요 거리에서 가장자리들을 오리지오날 소스. 이 때문에 무한 무한 선택항목을 (이웃 노드) 에서 분기 계수를 주어진 노드입니다 검색할 수 있습니다.
자원 (메모리) 는 formula_63 의 경우, 매우 큰 깊이까지의 지원 (예를 들어 다음 노드를 검색할 수 저장할 때) 한 후, DFS 완료되지 않은 경우에도 3 의 주요 검색할 수 있는 이웃 오리지오날 소스. 이 때문에 무한 깊이 있는 상황에서 모든 노드를 검색할 수 있어, 적어도 알고리즘입니다 새로운 선택 (이웃 노드) 즉 방문하지 않은 합니다.
따라서 사용 시기 및 DFS BFS 결론을 내릴 수 있습니다. 예를 들어, 우리가 겪고 있는 분기 계수를 관리 가능한 제한 및 관리 가능한 제한된 심도입니다. 검색할 수 있는 경우 (즉, 노드는 소스, 그 후 일부 가장자리들을 얕은 오리지오날 bfs 를 사용하는 것이 좋습니다. 반면 검색할 경우 노드는 소스, 그 후 수 많은 가장자리들을 깊이형 즉 오리지오날 DFS 를 사용하는 것이 좋습니다.
예를 들어, 만약 우리가 비슷한 관심사를 가진 사람들이 소셜 네트워크 검색할 수 있고, 이를 통해 특정 사람 한 사람이 될 수 있기 때문에, BFS 적용하십시오 표시됨과 오리지오날 대부분 이 친구의 친구 또는 친구들과 직접 소스 (즉, 하나 또는 두 개의 가장자리들을 아니다.
반면, 우리가 가진 사람들이 이익을 검색할 수 있고, 이를 통해 특정한 사람에게 완전히 다른 사람이 될 수 있기 때문에, DFS 적용하십시오 표시됨과 오리지오날 대부분 이 사람들이 그를 매우 먼 소스 (즉, 친구의 친구의 친구. 즉, 너무 많은 가장자리들을 아니다.
또한 응용 프로그램 및 DFS BFS 때문에 각 메커니즘의 한 검색: 다를 수 있습니다. 예를 들어, BFS 중 하나를 이용할 수 있다 (단 분기 계수는 관리성이 좋은) 또는 도달가능성 때 우리는 그냥 dfs 사용한다고 가정할 때 관리가 용이한 깊이까지의) 를 확인할 수 없기 때문에 다른 한 노드에서 정보 노드입니다 위치를 확인할 수 있습니다. 또한 같은 둘 다 동일한 작업을 해결할 수 있는 위상 정렬을 그래프란다 (있으면).
BFS 최단 경로를 찾는 데 사용할 수 있는 장치 무게 가장자리들을 노드입니다 (오리지오날 소스) 에서 다른. 반면, DFS 데 사용할 수 있는 모든 선택항목을 배출 될 것 같은 긴 경로를 발견하고 심도 있는 상태였기 때문에, 두 노드 사이에 있는 비순환 그래프. Dfs 를 사용할 수 있습니다 또한 사이클입니다 탐지는 그래프란다.
결국 우리는 무한 반복 심화 깊이 경우 검색 (IDS), 무한 분기 팩터도 이용할 수 있다.
사용되고 있을 상황에 따라 다릅니다. 우리는 이 문제를 그래프란다 탐색, 해야 할 때마다 특정 목적을 위해. 문제가 발생했을 때 최단 경로를 찾을 수 있는 경우, BFS 는 이분 그래프 (graph) 또는 발견사항 비가 그래프란다 이용할 수 있다. 퇴각검색 필요로 하는 의 처리 문제에 대한 인식 또는 어떤 논리와, DFS 사용할 수 있습니다.
이는 검색 트리의 구조와 솔루션 수 및 위치에 따라 크게 달라집니다(검색된 항목이라고도 함).
솔루션이 트리의 루트에서 멀지 않은 곳에 있다는 것을 알고 있다면 BFS(width first search)가 더 나을 수 있습니다.
트리가 매우 깊고 솔루션이 드문 경우 깊이 우선 검색 (DFS)는 매우 오랜 시간이 걸릴 수 있지만 BFS가 더 빠를 수 있습니다.
트리가 매우 넓으면 BFS에 너무 많은 메모리가 필요할 수 있습니다. 완전히 비현실적일 수도 있어요
솔루션이 빈번하지만 트리의 깊숙한 곳에 있는 경우 BFS는 비실용적인
검색 트리가 매우 깊으면 검색을 제한해야 합니다. 깊이 우선 검색(DFS)을 위한 깊이(예: 반복 심화).
하지만 이는 경험의 법칙에 불과하기 때문에 실험이 필요할 수도 있습니다.
깊이 우선 탐색
깊이 우선 검색을 종종 사용되는 시뮬레이션 게임 (및 게임 같은 경우 실제). 일반적으로 몇 가지 액션 게임 중 하나를 선택할 수 있습니다. 각 항목을 선택할 수 있습니다, 이로 인해 더욱 강화하기 위해 각 선택값, 등드으로 를 이처럼 모양의 그래프를 가능성.
! [입력하십시오. 이미지 여기에 설명을] [1]
예를 들어, 같은 체스 게임에서는 상상도 할 수 있습니다, 정신적으로 어떤 움직이십시오 틱택토 결정할 때는 상대의 대응 방안, 이동, 그런후에도 너회의 그런후에도 너회의 대응 방안과 드릴링됩니다. 어떻게 할 수 있는 가장 좋은 결과를 보고 결정할 수 있습니다) 가 이동할 수 있습니다.
일부 내용만 트리별 주관업체로 패스이므로 경기에서 이길 수 있습니다. 일부 이어질 때, 상대방이 이를 이겨야 합니다 같은 기간말 백업하십시오 이전 노드입니다 및 시도해보십시오 또는 백트랙, 다른 경로를. 이 방법을 사용하여 경로를 찾을 때까지 나무를요 살펴보았으므로 성공적인 "고 밝혔다. 그리고 이 경로를 따라 첫 번째 이동 할 수 있습니다.
너비 우선 탐색
너비 우선 탐색 () 는 이 흥미로운 속성: 먼저 한 다음, 멀리 있는 모든 정점 모서리까지 aspt 시작점이 있는 두 개의 모서리, 그리고 모든 정점 빼냅니다 드릴링됩니다. 이 때문에 최단 경로를 찾는 경우에는 시작 단계에서 특정 교점까지의 교점까지의. Bfs 시작할 때, 당신이 알고 있는 경로를 찾을 경우, 지정된 교점까지의, 지금까지 발견된 가장 짧은 경로를 는 노드입니다. 이 경우 최단 경로를 찾을 수 있을 것으로, BFS 이미.
너비 우선 탐색 찾는 이웃이 노드입니다 토렌트 p2p 네트워크를 사용할 수 있으며, GPS 시스템, 소셜 네트워킹 사이트 같은 위치를 찾을 수 있는 사람을 찾기 위한 거리 및 창조하셨노 지정한 것을 좋아한다.
니스 (nice) 에서 것이다. http://www.programmerinterview.com/index.php/data-structures/dfs-vs-bfs/
>. 예를 들어, BFS
다음은 어떤 BFS 참고하십시오. 이 같은 일이 바로 여기서 우리가 사용할 수 있는 수준을 트리 순회 주문하십시오 대기열은 반복적인 외곽진입 (주로 반복 될 것이라고 up with DFS). 순서를 나타내는 숫자는 노드입니다 받을시간은 액세스됩니다 BFS:
enter 이미지 여기에 설명을!
깊이 있는 첫 번째 검색, 트리의 루트, 준수하십시오 시작한 선수단 중 분기로서의 노드입니다 또는 사용자가 찾고자 하는 발견될 때까지 최대한 멀리 인컨텍스트 쳐서 리프 노드 (node) 와 자녀는 없다). 그런 경우 리프 노드) 가 남아 있는 가장 가까운 조상 http://community. 계속할 수 있다.
>. 예를 들어, DFS
예를 들어 보겠습니다 뭐한테 DFS 참고하십시오. 이진 트리 순회 주문하십시오 리프 레벨 1 에서 작동합니까 게시물로의 시작할 것이라고 생각한다. 순서를 나타내는 숫자는 노드입니다 받을시간은 액세스됩니다 DFS:
enter 이미지 여기에 설명을!
>. Dfs 차이점 및 BFS
Bfs 비교 및 DFS, 가장 큰 장점은 DFS 비해 훨씬 낮은 메모리 요구 조건을 갖췄다는 점도 BFS 있기 때문에 모든 자식 포인터를 저장하는 데 필요한 것은 각 레벨에서. 그리고 어떤 데이터에 따라 찾고 있고, DFS 또는 BFS 유리할 수 있다.
예를 들어, 패밀리 트리 주어진 경우 누가 살아 있는 사람을 찾고 있었는데, 그런 사람이 될 수 있는 안전한 solaris. 진단트리에서 약간만이라도 바닥에 진단트리 즉, BFS 매우 오랜 시간이 걸릴 것이라고 도달할 수 있는 마지막 수준. 그러나 목표를 찾을 것이라고 DFS 가속화합니다. 그러나 한 가족이 숨진 경우 찾고 있었는데, 그 사람이 아주 오래 전 약간만이라도 (closer to the top of the tree. 그런 다음, BFS DFS 보다 일반적으로 볼 수 있습니다. 따라서 데이터 및 너희는너희가 찾는 중 장이점이 따라 달라질 수 있습니다.
한 번 더 비유하사 페이스북. 프렌즈 (friends of 제안했다. 여기서 우리가 사용할 수 있는 친구들을 제안으로 BFS 즉시인지 필요하다. 최단 경로를 찾을 수 있습니다 (사용 반복) 또는 감지할 수 있는 사이클입니다 DFS 사용할 수 있습니다.
Width First Search는 일반적으로 트리의 깊이가 다를 수 있으며 트리의 일부만 검색하면 해결 방법을 찾을 수 있는 최선의 방법입니다. 예를 들어 시작 값에서 최종 값까지의 최단 경로를 찾는 것이 BFS를 사용하는 좋은 방법입니다.
깊이 우선 검색은 트리 전체를 검색해야 할 때 일반적으로 사용됩니다. BFS보다 구현(재귀 사용)이 쉽고 상태 요구도 적습니다. BFS는 전체 'frontier'를 저장해야 하지만, DFS는 현재 요소의 상위 노드 목록만 저장하면 됩니다.
DFS는 BFS보다 공간 효율이 높지만 불필요한 깊이까지 도달할 수 있습니다.
그 이름에서 알 수 있습니다.폭은 넓지만 깊이는 매우 한정되어 있는 경우(예: 제한된 수의 이동 및 인용), DFS가 BFS보다 선호될 수 있습니다.
IDDFS에서
DFS의 공간 효율성을 결합하는 덜 알려진 변종도 있지만, (추천적으로) BFS의 수준별 방문은 심도 우선 탐색(deepth-first search))이라는 점을 언급해야 한다. 이 알고리즘은 일부 노드를 재점검하지만 점근적 차이의 일정한 요인만 제공합니다.
한 때 이 질문에 비호환성의 프로그래머용 팩터에서의 아웃해야 외곽진입 있다. # 39 는 re 사용하는 경우, 반복, 그리고 깊이 우선 탐색 you& 간단해진다는 # 39, t need to 추가로 구축할 수 있는 데이터 구조를 유지할 수 있기 때문에 don& 노드를 탐색할 수 있다.
39 에 대해 깊이 우선 탐색 here& 무방향성 you& # 39 의 경우, "이미 방문한" 정보를 저장하는 노드입니다 그래프화합니다 re:
"이미 방문한" 정보를 저장하는 경우 별도의 데이터 구조:
이와 함께 별도의 데이터 구조를 유지하는 데 필요한 곳에 대조합니다 너비 우선 탐색 목록니다 노드입니다 아직 dell., 아무리 생각해도.
한 가지 중요한 BFS 약간만이라도 최단 경로를 찾는 데 사용할 수 있다는 것을 이용하여 임의의 두 노드 사이에 비가 작업공간에서 그래프화합니다. 반면에, 우리 DFS 를 사용할 수 없는 동일한.
예를 들어, BFS 위한 페이스북 고려해 볼 만하다. 우리가 받은 친구 추가 FB 에서 프로파일만을 제안에 다른 친구 프로파일입니다. 예를 들어, E, F, B, 동시에 A-> B-> B-> 대한 건의 사항을 얻을 수 있어야 하므로, E, f, BFS 인도되니 사용하여 두 번째 읽을 수 있는 수준이다. DFS 를 기반으로 한 것이라는 시나리오가 더 많은 데이터를 기반으로 소스에서 타겟으로의 우리는 뭔가 싶다. 이미 언급한 바와 같이 대한 체스 또는 스도쿠. 나는 생각한다, 다른 한 가지는 슬라이드에서는 DFS 최단 경로를 커버할 수 있기 때문에 전체 경로 우선 사용해야 합니다 하나님이 결정할 수 있는 최고라니까요 DFS 그러나 BFS 사용할 수 있어 마치 greedy& # 39 의 외곽진입 최단 경로, 하지만 그 최종 결과가 다를 수 있습니다. 알려주세요 표시할지를 내 잘못 알고 있다.
Dfs (또는 BFS) 의 일부 알고리즘을 특정 속성을 달려 있는 것이다. 예를 들어, 각 구성 요소를 찾는 호프크로프트 및 트라야누스 알고리즘입니다 2 접속됨 활용하여 사실을 이미 방문한 노드입니다 경로에서 발생하는 dfs 는 현재 루트로부터의 개척한 노드입니다.
다음은 너희는너희가 asking. 포괄적인 될 수 있다.
간단히 말해.
첫 번째 검색 알고리즘을 breadth (BFS), 검색, 모든 이웃 노드 Breadth" " 변경분이 이름, through the out) 가 그 노드의 가장자리들을 방문하지 않은 이웃 등, 앞에서 언급한 이웃 통해 접속할 수 있는 모든 노드에 인도되니 아웃해야 가장자리들을 &solarisdvd 오리지오날 방문해 소스 (저희에게는힘과 계속할 수 있으면 다른 소스 및 시행하십시오 오리지오날 방문하지 않은 나머지 노드와 등). # 39 에 왜 that& 최단 경로를 찾는 데 사용할 수 있습니다 (있는지) 에서 노드 (오리지오날 소스) 의 경우 다른 노드로 급지합니다 모서리는 유니폼을 입게 됐다.
첫 번째 검색 (DFS),, Depth" " 알고리즘입니다 깊이까지의 변경분이 이름) 가 가장 최근에 발견된 노드입니다 x 통해 이웃 방문하지 않은 아웃해야 모서리입니다. 이 알고리즘은 x 에서 방문하지 않은 노드입니다 역 추적, 이웃이 없으면 검색할 수 있는 기호표 노드입니다 x 의 방문하지 않은 이웃 노드 (통해 아웃해야 가장자리들을) 에서 발견된 모든 노드에 인도되니 오리지오날 방문해 소스 등과 연결할 수 있다 (we 계속할 수 있으면 다른 소스 및 시행하십시오 오리지오날 방문하지 않은 나머지 노드와 등).
Bfs 및 DFS 모두 불완전한 수 있습니다. 예를 들어, 분기 계수를 노드입니다 제한이 없으므로, 매우 큰 자원 (메모리) 지원 (예를 들어 다음 노드를 검색할 수 저장할 때) 한 후, BFS 완료되지 않은 경우에도 검색할 수 있는 몇 가지 주요 거리에서 가장자리들을 오리지오날 소스. 이 때문에 무한 무한 선택항목을 (이웃 노드) 에서 분기 계수를 주어진 노드입니다 검색할 수 있습니다. 자원 (메모리) 는 formula_63 의 경우, 매우 큰 깊이까지의 지원 (예를 들어 다음 노드를 검색할 수 저장할 때) 한 후, DFS 완료되지 않은 경우에도 3 의 주요 검색할 수 있는 이웃 오리지오날 소스. 이 때문에 무한 깊이 있는 상황에서 모든 노드를 검색할 수 있어, 적어도 알고리즘입니다 새로운 선택 (이웃 노드) 즉 방문하지 않은 합니다.
따라서 사용 시기 및 DFS BFS 결론을 내릴 수 있습니다. 예를 들어, 우리가 겪고 있는 분기 계수를 관리 가능한 제한 및 관리 가능한 제한된 심도입니다. 검색할 수 있는 경우 (즉, 노드는 소스, 그 후 일부 가장자리들을 얕은 오리지오날 bfs 를 사용하는 것이 좋습니다. 반면 검색할 경우 노드는 소스, 그 후 수 많은 가장자리들을 깊이형 즉 오리지오날 DFS 를 사용하는 것이 좋습니다.
예를 들어, 만약 우리가 비슷한 관심사를 가진 사람들이 소셜 네트워크 검색할 수 있고, 이를 통해 특정 사람 한 사람이 될 수 있기 때문에, BFS 적용하십시오 표시됨과 오리지오날 대부분 이 친구의 친구 또는 친구들과 직접 소스 (즉, 하나 또는 두 개의 가장자리들을 아니다. 반면, 우리가 가진 사람들이 이익을 검색할 수 있고, 이를 통해 특정한 사람에게 완전히 다른 사람이 될 수 있기 때문에, DFS 적용하십시오 표시됨과 오리지오날 대부분 이 사람들이 그를 매우 먼 소스 (즉, 친구의 친구의 친구. 즉, 너무 많은 가장자리들을 아니다.
또한 응용 프로그램 및 DFS BFS 때문에 각 메커니즘의 한 검색: 다를 수 있습니다. 예를 들어, BFS 중 하나를 이용할 수 있다 (단 분기 계수는 관리성이 좋은) 또는 도달가능성 때 우리는 그냥 dfs 사용한다고 가정할 때 관리가 용이한 깊이까지의) 를 확인할 수 없기 때문에 다른 한 노드에서 정보 노드입니다 위치를 확인할 수 있습니다. 또한 같은 둘 다 동일한 작업을 해결할 수 있는 위상 정렬을 그래프란다 (있으면). BFS 최단 경로를 찾는 데 사용할 수 있는 장치 무게 가장자리들을 노드입니다 (오리지오날 소스) 에서 다른. 반면, DFS 데 사용할 수 있는 모든 선택항목을 배출 될 것 같은 긴 경로를 발견하고 심도 있는 상태였기 때문에, 두 노드 사이에 있는 비순환 그래프. Dfs 를 사용할 수 있습니다 또한 사이클입니다 탐지는 그래프란다.
결국 우리는 무한 반복 심화 깊이 경우 검색 (IDS), 무한 분기 팩터도 이용할 수 있다.
Dfs 및 속성에 따라 BFS. 예를 들어, 최단 경로를 찾는 싶다.
39, & # 39 보장받을 수 있으며, 우리는 대개 bfs shortest&;.
그러나 이 시점에서 우리가 할 수 있는 달성할 수 있다고 장담할 수 있을 뿐 dfs 따라오렴 shortest& # 39, & # 39 점, 보장 못한다.
어떤 문제를 안고 있는 것 같아 달려 있습니다.
단순 >, 최단 경로 그래프 - 1. bfs 2. > 가능한 모든 결과 -; dfs 3. 검색 그래프 (treat 트리에서만 매트릭스 tpc. 그래프란다 너무) - >. dfs .
깊이 우선 검색을 사용할 때, 처리되기 때문에 스택할 노드입니다 퇴각검색 DFS 제공됩니다. 너비 우선 검색 스택, 큐, 추적할 수 있기 때문에 사용하지 않는 뭐한테 노드입니다 처리되지 않은 퇴각검색, BFS 제공됩니다.
Dfs 사용할 때 진단트리는 폭은 매우 크고 농도가 낮은 않을 것처럼 스택할 반복이 오버플로입니다. Bfs 사용할 때 매우 큰 폭, 깊이 나무를요 트래버스합니다 낮다.
사용되고 있을 상황에 따라 다릅니다. 우리는 이 문제를 그래프란다 탐색, 해야 할 때마다 특정 목적을 위해. 문제가 발생했을 때 최단 경로를 찾을 수 있는 경우, BFS 는 이분 그래프 (graph) 또는 발견사항 비가 그래프란다 이용할 수 있다. 퇴각검색 필요로 하는 의 처리 문제에 대한 인식 또는 어떤 논리와, DFS 사용할 수 있습니다.
이 경우 DFS 어떤 것보다 더 나은 BFS 있음을 알려주는 좋은 예다. https://leetcode.com/problems/01-matrix/
제대로 할 때 보다 더 멀리 있는 거리, 두 솔루션은 현재 셀입니다 구현됩니까 dell. 셀입니다 +1. 그러나 여러 차례 방문한 결과 O ( *) 및 DFS 비효율적임 동일한 셀 수 있습니다.
예를 들어,