알고리즘 그래프 예제

그래프의 모든 가장자리가 동일한 가중치인 경우 BFS를 사용하여 그래프의 노드 사이의 최소 거리를 찾을 수도 있습니다. Prim의 알고리즘은 탐욕스러운 알고리즘으로 가중치가 적용된 무방향 그래프에 대한 최소 스패닝 트리를 찾는 데 도움이 됩니다. 먼저 정점을 선택하고 해당 정점에서 가장 낮은 가중치 가시가 있는 모서리를 찾습니다. 그리고 그래프 (미로)가 비순환인 경우에만 경로를 찾을 수 있습니다 (또는 여기에 있는 경우 입구와 출구가 미로의 바깥쪽 가장자리에 있는 경우). 최단 경로 알고리즘은 소스 노드(S)에서 대상 노드(D)까지 의 최소 비용 경로를 찾는 방법입니다. 여기서는 너비 우선 검색 알고리즘이라고도 하는 무어의 알고리즘에 대해 설명합니다. 그래프의 인접 성 목록은 다음과 같습니다: 여기 `s`는 0 또는 소스 노드로 간주됩니다. 가중치 그래프를 사용하면 동일한 작업을 수행하지만 단계 크기는 가중치에 의해 결정됩니다. 우선 순위 대기열을 사용하여 시작에 가장 가까운 노드를 추적합니다. 토폴로지 정렬은 방향이 지정된 비순환 그래프의 정점 정렬 목록으로, 그래프에서 v에서 w까지의 경로가 있는 경우 v가 목록에 w 앞에 나타납니다. 마지막으로 3단계에서는 모든 정점이 그래프에서 “제거”되어 정렬된 목록에 배치되었는지 확인합니다. 그렇다면, 우리는 성공적으로 위상 정렬을 발견했다. 그렇지 않은 경우 토폴로지 정렬이 불가능합니다(그래프에는 주기가 있어야 합니다).

따라서 일반적으로 정점을 가능한 한 자주 방문하지 않도록 알고리즘에서 이미 탐색한 정점을 기억해야 합니다(또는 최악의 경우 통과가 무기한 계속되지 않도록). 이 작업은 그래프의 각 정점을 다각측량 중에 “색상” 또는 “방문” 상태와 연결하여 수행될 수 있으며, 알고리즘이 각 정점을 방문할 때 확인 및 업데이트됩니다. 정점이 이미 방문한 경우 무시되고 경로가 더 이상 추구되지 않습니다. 그렇지 않으면 알고리즘이 정점을 검사/업데이트하고 현재 경로를 계속 아래로 계속 합니다. 트리 순회와 달리 그래프 통과는 이미 탐색된 정점으로 전환하기 전에 반드시 알려져 있지 않기 때문에 일부 정점을 두 번 이상 방문해야 할 수 있습니다. 그래프가 조밀해지면 이 중복성이 더 널리 보급되어 계산 시간이 증가합니다. 그래프가 더 희소해지면 그 반대의 경우도 마찬가지입니다. 평균적으로, 이 수정된 알고리즘은 아마도 약간 더 빠르며, 대부분의 그래프에서는 더 적은 반복 후에 주 루프를 종료하고, 대부분의 그래프의 경우 우선 순위 대기열의 평균 길이가 더 길어질 수 있지만, 이것은 더 낮은 오버헤드에 의해 상쇄되기 때문에 표준, 비조정 우선 순위 대기열. 그래프 색상은 인접한 두 정점이 동일한 색상을 갖지 않도록 그래프의 정수에 색상을 할당하는 방법입니다.

일부 그래프 착색 문제는 – 다시, 나는 그래프의 인접 목록 구현, 지도의 벡터 기반 구현을 가정합니다. 이 점을 염두에 두고, 분명히 $O(1)$인 모든 것에 레이블을 붙이는 것부터 시작해 봅시다.