티스토리 뷰
첫 번째 궁금증, what?
다익스트라 알고리즘이 무엇인가?
다익스트라란, 그래프의 한 정점에서 모든 정점으로 이동하는 각 경우당 가장 효율적인 방법을 찾아내는 알고리즘이다.
- 비용이 주어질 때 비용을 최소화하여 움직일 수 있는 방법을 찾아내는 알고리즘이다.
- 비용으로 시간 및 돈 등을 들 수 있다.
- 시작지점에서 최소 비용으로 갈 수 있는 정점을 구하고, 정점에서부터 목표지점으로 가는 경로의 비용을 더하여 나온 cost가 정점을 지나지 않고 목표지점으로 갈 경우의 cost와 비교하여 적은 것을 선택한다.
두 번째 궁금증, why?
다익스트라가 왜 필요한가?
가장 "적은" 비용으로 가장 "효율적(빠른)"방법을 찾아내는 알고리즘이기에, 실생활에서 적극적으로 사용이 가능하다.
예) 네비게이션 상의 시작점에서 도착점으로 가기 위한 효율적인 방법을 찾기 위해, 최소비용 최고효율을 찾아주는 알고리즘인 다익스트라를 사용할 수 있다.
세 번째 궁금증, how?
어떻게 사용할 수 있을까?
<필수요소>
- 인접행렬을 구현
단방향 혹은 양방향을 고려하여 인접행렬을 작성한다.
인접행렬은 0으로 초기화하여 사용하며 들어오는 값은 경로가 있는 경우이기에, 경로가 없는 경우는 0으로 남는다.
- 시작지점의 cost배열
시작 지점에서 갈 수 있는 모든 노드의 cost를 저장할 배열을 설정한다.
- check[]배열
시작 지점에서 들린 노드를 check해주기 위해 배열을 생성한다.
<예제> 최소비용 구하기
1916번: 최소비용 구하기
첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그
www.acmicpc.net
% 주의할점 %
cost값을 비교할 때 정점을 들리지 않았을 때의 cost값이 0이라면 무조건 정점을 들렸을 때의 cost를 넣어준다.
시작지점에서의 cost배열을 st[]라고 하자
st[]={0};으로 초기화한 상태에서 갈 수 있는 경로만 cost가 주어져 갈 수 없는 경우일때 0이 계속 들어있는다.
이 상태로 cost값을 비교한다면 갈 수 없는 경로는 비교하면 안 되기에, 정점을 들렸을 때의 cost를 삽입해 갈 수 있는 경로를 만들어준다.
- Total
- Today
- Yesterday
- 10866 백준
- 핀테크 트렌드
- 스택 파이썬
- 백트래킹(1)
- 13886
- 백준 4963
- 영화 리뷰 긍정 부정 분류
- c++덱
- stack 컨테이너
- 온라인프로필 만들기
- 4963 섬의개수
- mm1queue
- 백준 10866
- 기사작성 대외활동
- 시뮬레이션 c
- CSMA/CD란?
- CREATE ASSERTION
- 효율적인방법찾기
- 백준 숫자놀이
- DRF 회원관리
- 백준 15650 파이썬
- 코딩월드뉴스
- LAMBDA
- 소프트웨어공학설계
- 파이썬 알아두면 유용
- 딥러닝입문
- 11053 백준
- 기본 텍스트 분류
- 백준 11053 파이썬
- 모듈 사용법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |