yangmin0513   4년 전

다익스트라를 3번써서 풀었습니다. 문제는 테스트 케이스를 한번씩 할때마다 weight라는 2차원배열을 초기화 하는 create_graph함수를 호출합니다.

create_graph의 시간복잡도가 O(n^2)인데 이거를 테스트 케이스가 돌때마다해서 O(n^3)을 으로 시간복잡도가 되서 시간초과가 뜨는걸까요??

아니면 마지막에 출력을 맞출려고 정렬시 퀵소트O(n*logn)을 사용하는것이 문제일까요.

출력은 에제 출력과 동일하게 터미널상에서 나오는데 시간복잡도를 줄이지를 못하겠습니다.

pikkoro97   4년 전

이차원 배열로 다익스트라를 돌리면 시간 복잡도가 T(|V|^2 + logE)가 나옵니다. 모든 노드가 한번씩은 큐에서 뽑히는데 한 노드 당 V만큼 if문을 돌려야 하기 때문에  V^2이 걸리고 큐에 최대 E(실제 엣지 개수) 만큼 들어가기 때문입니다. 이차원 배열은 플로이드 쓰거나 E가 V^2에 근접하는 거 아니면 쓰지 않는 걸 추천드립니다.

pikkoro97   4년 전

위에 시간복잡도 logE가 아니라 ElogE입니다.

댓글을 작성하려면 로그인해야 합니다.