https://www.youtube.com/watch?v=_lHSawdgXpI : ์ง๊ด์ ์ดํด ๋์์ฃผ๋ 3๋ถ์ง๋ฆฌ ์์
https://code.google.com/archive/p/eclipselu/downloads : algorithm.pdf์ Dijkstra algorithm ๋ถ๋ถ (Pseudocode ์ถ์ฒ)
์๋ ๊ทธ๋ฆผ์ ํ๋์ ํ๊ธ ๊ธ์จ ์ถ์ฒ๋ ๋
Pseudocode
์ด ์๋์ฝ๋์์๋ dist๊ฐ ์ ๋ฐ์ดํธ๋ ๋๋ง๋ค priority queue H์ push ํด์ฃผ๋ ๊ฒ์ด ์๋๋ผ, ์ฒ์๋ถํฐ H์ ๋ชจ๋ ์์์ ๋ํ ์ ๋ณด๋ฅผ ๋ฃ์ด์ฃผ๊ณ dist๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด H์๋ ๊ทธ๋ฅผ ์๋ฆฐ๋ค๋ ์ปจ์ ์ด๋ค. ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋ ธ๋๋ H์์ ์ฌ๋ผ์ง๋ฏ๋ฅด unvisited ๋ผ๋ ์ ์ ์ฌ์ฉํ ํ์๊ฐ ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ค์ ๊ตฌํํ ๋ dist๊ฐ ์ ๋ฐ์ดํธ๋ ๊ฒ์ H์ ์๋ฆฌ๋ ค๋ฉด (๊ฐ๋ น v์ dist๊ฐ ์ ๋ฐ์ดํธ๋์๋ค๊ณ ์น๋ค๋ฉด) H์์ value๊ฐ v์ธ ์์๋ฅผ ์ฐพ๊ณ , ๊ทธ ์์์ key๋ฅผ ์๋ก์ด dist๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค. ๊ทธ๋ฌ๋ STL์ priority_queue๋ ๋ด๋ถ ์์๋ฅผ traverse ํ๋๋ก ์ง์ฌ์์ง๋ ์์ผ๋ฏ๋ก value๊ฐ v์ธ ์์๋ฅผ ์ฐพ๊ณ key๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ ์์ฒด๊ฐ ์ด๋ ต๋ค.
๋ฐ๋ผ์ dist๊ฐ ์ ๋ฐ์ดํธ๋ ๋๋ง๋ค H์ push ํ๊ณ , H์์ delete_min() ํ ๊ฒฐ๊ณผ๊ฐ ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋ ธ๋์ ์ ๋ณด๋ผ๋ฉด ๋ฌด์ํ๋ ๋ฐฉ๋ฒ์ ์ธ ์ ์๋ค. ์ด ๋๋ unvisited ๋ผ๋ ์ ์ ๋๊ณ delete_min() ํ ๊ฒฐ๊ณผ๊ฐ ๋ฐฉ๋ฌธํ ๋ ธ๋์ธ์ง, ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋์ธ์ง๋ฅผ ํ์ธํ๊ณ , ์ด๋ฒ์ ๋ฐฉ๋ฌธํ์๋ค๋ฉด unvisited์์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์ธ ์ ์๋ค.
'Problem Solving > Algorithm, Tips' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ต๋ ์ฐ์ ๋ถ๋ถ ์์ด์ ํฉ (0) | 2020.06.23 |
---|---|
Kruskal / Prim Algorithm (ํฌ๋ฃจ์ค์นผ / ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ) (0) | 2020.06.02 |
๋ฐฑ์ค ์ธํ ๋ฐ๋ ๋ฌธ์ ์๋ฆฌ์ฆ (c++) (0) | 2020.05.19 |
cpp์์ 2์ง์๋ก ์ถ๋ ฅํ๋ ๋ฒ (bitset) (0) | 2020.05.06 |
[SWEA] 2071. ํ๊ท ๊ฐ ๊ตฌํ๊ธฐ - ์์์ N ๋ฒ์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ (0) | 2019.12.27 |
๋๊ธ