그래프를 표현하는 두 가지 방법이 있습니다 : 하나는 매트릭스를 사용하고 다른 하나는리스트를 사용하는 것입니다.선형 시간에 그래프를 뒤집는 방법은 무엇입니까?
행렬을 사용하는 경우 행렬의 모든 비트를 뒤집어 써야합니다. 그게 O (V^2) 시간 걸리지 않니?
목록을 사용하는 경우 각 목록을 하나씩 트래버스하고 새 세트를 만들지 않아도됩니까? 그것은 선형 인 O (V + E) 시간이 걸릴 것으로 보입니다. 나 맞아?
그래서 여기에 또 다른 질문이 있습니다. 예를 들어, 그래프 (매트릭스 또는 목록)에 Dijkstra 알고리즘을 사용하고 장면 뒤의 데이터 구조에 우선 순위 큐를 사용한다고 가정합니다. 그래프 표현과 데이터 구조의 관계가 있습니까? 알고리즘의 성능에 영향을 미칩니 까?
Dijkstra 알고리즘의 표현과 우선 순위 대기열에 목록을 사용한다고 가정하면 Dijkstra의 행렬과 사용 우선 순위 대기열간에 차이가 있습니까?
나는 makeQueue
수술과 관련이 있다고 생각하십니까? 아니면 그들은 전혀 다르지 않습니까?
는 E = O (V^2)와 같은 일반 선형 시간에 발생하지 않습니다. – collapsar
@ collapsar * * 항상 * 정점 * 및 모서리와 관련하여 선형 시간으로 발생합니다. 시간이 입력의 다른 부분과 직접적으로 관련되어있을 때 (특히 정점) (명시 적으로 언급하지 않고) 입력의 일부에만 시간 복잡성을 정의하는 것은 다소 비논리적 인 것처럼 보입니다 (그러나 나는 많은 것을 주장 할 수 없습니다. 사람들은 당신이 그랬던 것처럼 그것을 정의 할 수 있습니다.) 그리고 E = O (V^2)는 밀도가 높은 그래프입니다. 스파 스 그래프는 E = O (V)입니다. – Dukeling
@dukeling 문제의 '크기'를 단일 스칼라로 줄이면 정밀도가 떨어지는 것을 지적하는 것이 옳습니다. otoh, big-Oh 표기법은 최악의 경우를 설명하고 그래프를 고려하면 추가 제약없이 최악의 경우는 E = O (V^2)를 의미합니다. O (V^2)는 인접 행렬의 에지 역전에 대해서도 올바르지 않다. - 표현이 플래그 행 - 전공 대 전공 - 전공을 자랑한다면, 전치는 O (1)이다. – collapsar