Q&A 12주차
- a) false, b) false(matrix → list) c) false, d) true
- edge 를 추가하는 것이나 제거하는 것 모두 matrix가 더 쉬움
- a) true b) false(E^2 x 2*E o), c) false(source) d) false (둘다 similar O(|V| + |E|)
- d) nd/2 (edge 1개가 degree2개에 의해 공유당하고 있기에 = handshaking lenma)
- d) 31 (알고리즘을 이해할 때 하나의 좋은 예시를 가지고 그림을 그려보는 것은 굉장히 좋은 방법이다!)
- c) 14 (간단하게는 A→A까지 돌아오는 것이므로 전체 노드 개수 * 2)
- b) 현재 지나는 노드가 그 노드의 부모노드들 중 하나를 가리키는 경우
- a는 cross edge를 고려하면 안될 수도 있음
- directed graph = digraph
- a) BFS
- dfs, bfs 둘다 사이클을 발견하는데 사용할 수 있지만, 효율성은 그래프 구조(모양)에 따라 다 다르다.
- 사이클이 그래프의 깊숙한 곳에 있으면 dfs가 효율적, 사이클이 그래프의 루트노드쪽에 있으면 bfs가 효율적!
- 어떤 설계에서 사이클은 시간을 계속 잡아 먹고 있을 수 있기에 빠르게 찾아내야함.
- d) 3 2 4 1 6 5 → 1은 4보다 먼저 나올 수가 없는 구조임.
- DAG : Directed Acyclic Graph = 비사이클 방향성의 그래프
- Topological ordering : 위상정렬 (DAG에 기반한, 노드간의 순서가 정해져있다. 반드시 누군가의 프로세스가 끝나야 다른 프로세스를 할 수 있는 것)
- finishing time 기준 내림차순 정렬한 것이 답이다
- LA22, LA15, LA31, LA16, LA41, LA127, LA32, LA169, LA126
- 126부터 169, 32 ~~ 다 실행되어야 마지막에 22가 실행될 수 있음
- 각 노드에서 BFS로 s개의 노드를 찾는다.
- minimum expenses를 구하려면 가까운(코스트가 작은) 노드들부터 들려야하기 때문에 BFS로 !
- 각 BFS = O(n+m)
- 이걸 n개의 노드에 대해서 돌려야하므로, 전체 시간 복잡도는 O(n(n+m))이 된다.
23강 Minimum Spanning Trees
24강 Single-Source Shortest Paths
- Single-Source Shortest Paths 단일 출발지 최단 경로
- Bellman Ford 알고리즘
- Dijkstra’s 다익스트라 알고리즘