[TIL]그래프 DFS&BFS // reduce() 고민

라형선·2023년 5월 15일
0

DFS(깊이 우선 탐색)

스택(stack)이나 재귀함수를 이용하여 그래프를 탐색합니다. 시작점에서부터 한 경로를 따라 최대한 깊게 탐색한 후, 더 이상 갈 곳이 없으면 이전 단계로 돌아가 다른 경로를 탐색합니다. DFS는 그래프의 모든 노드를 방문하며, 노드의 방문 순서는 방문한 순서대로 기록됩니다.

BFS(너비 우선 탐색)

큐(queue)를 이용하여 그래프를 탐색합니다. 시작점에서부터 인접한 노드들을 모두 방문한 후에 다시 그 인접한 노드들의 인접한 노드들을 방문하는 방식으로 진행합니다. BFS는 시작점에서부터 모든 노드까지의 최단 경로를 구할 때 사용할 수 있습니다. BFS는 노드의 방문 순서는 가까운 노드부터 방문됩니다.

DFS와 BFS는 각각 장단점이 있습니다. DFS는 구현이 간단하고 메모리를 적게 사용하지만, 최단 경로를 보장하지 않고 무한 루프에 빠질 가능성이 있습니다. BFS는 최단 경로를 보장하지만 구현이 복잡하고 많은 메모리를 사용합니다. 따라서 탐색하는 그래프의 특성에 따라 알고리즘을 선택하여 사용해야 합니다.

reduce함수 고민

  const userList = id_list.reduce((result, currentId) => {
    result[currentId] = [0, []];
    return result;
  }, {});
	 {"muzi":[0,[]],"frodo":[0,[]],"apeach":[0,[]],"neo":[0,[]]}이 기댓값 [2,1,1,0]

리듀스 함수 result[currentId] 부분이 이해가 되지 않는다.

profile
형선

0개의 댓글