• ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 6์ผ์ฐจ

    2021. 11. 6.

    by. JuneBee

    728x90
    ๋ฐ˜์‘ํ˜•

    ๋‚ ์งœ : 2021 ๋…„ 11 ์›” 6 ์ผ
    ์‹œ์ฒญ ๊ฐ•์˜ : ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (1), ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (2)

    ์˜ค๋Š˜ ์‹œ์ฒญํ•œ ๊ฐ•์˜๋Š” ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋‚ด๊ฐ€ ๋ญ˜๋“ค์€๊ฑด๊ฐ€์‹ถ๋‹ค ์ฃผ๋ฅด๋ฅต..

    ํฌ๋ฃจ์Šค์นผ์€ ์ดํ•ด๊ฐ€ ์ข€ ๋ฌ๋Š”๋ฐ ์—ญ์‹œ ์˜›๋‚ ๋ถ€ํ„ฐ ํฌ๊ธฐํ•œ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฐจ์›์ด ๋‹ฌ๋ž๋‹ค..

    ์ผ๋‹จ ๊ฐœ๋…๋งŒ ์ดํ•ดํ•˜๊ณ  ์ฝ”๋“œ๋Š” ๋‚˜์ค‘์— ์ดํ•ดํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค.

    ํฌ๋ฃจ์Šค์นผ vs ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    1. ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๊ฐ„์„  ์ •๋ณด๋ฅผ ์ •๋ ฌ -> ๊ฐ€์žฅ ๊ฐ€์ค‘์น˜๊ฐ€ ๋‚ฎ์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ์‚ฌ์ดํด์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ์—ฐ๊ฒฐ

    2. ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์‹œ์ž‘ ์ •์ ์„ ์„ ํƒ -> ์ •์ ์˜ ์ธ์ ‘ ๊ฐ„์„  ์ค‘ ๊ฐ€์ค‘์น˜๊ฐ€ ์ตœ์†Œ์ธ ๊ฐ„์„ ์„ ์—ฐ๊ฒฐ

     

    ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    https://www.cs.usfca.edu/~galles/visualization/Prim.html

     

    Prim MST Visualzation

     

    www.cs.usfca.edu

    ์œ„ ์‚ฌ์ดํŠธ์— ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ๋„์›€์ด ๋งŽ์ด ๋˜๋‹ˆ ์ฐธ๊ณ ํ•ด ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

    ์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : PNGWing

    ๊ตฌ๊ธ€๋กœ ๊ฒ€์ƒ‰ํ•ด์„œ ๋Œ€์ถฉ ์•„๋ฌด ๊ทธ๋ž˜ํ”„ ์‚ฌ์ง„์„ ๊ฐ€์ ธ์™€๋ดค๋‹ค.

    ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ์ž„์˜์˜ ์ •์ ์„ ์„ ํƒํ•˜์—ฌ ๊ทธ์™€ ์—ฐ๊ฒฐ๋œ ๊ฐ„์„  ์ค‘ ๊ฐ€์ค‘์น˜๊ฐ€ ์ž‘์€ ์ •์ ์„ ์„ ํƒํ•˜๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ๊ทธ๋ž˜ํ”„์— ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•ด๋ณด๋ฉด,

    1. "A" ์„ ํƒ : A-B(12), A-D(5) -> D ๋…ธ๋“œ๋ฅผ ์„ ํƒ

    2. "A- D " : A-B(12), D-B(10), D-E(15) , D-F(6) -> F ๋…ธ๋“œ๋ฅผ ์„ ํƒ

    3. "A - D - F " : A-B (12), D-B (10), D-E(15) , F-E(1) , F-G (11) -> E๋…ธ๋“œ ์„ ํƒ

    4. "A- D- F - E " : A-B (12), D-B (10), D-E(15) , F-G (11), E-B(7) , E-C(2),  E-G(9)  ->C๋…ธ๋“œ ์„ ํƒ

    5. "A- D- F - E - C" : A-B (12), D-B (10), D-E(15) , F-G (11), E-B(7) ,  E-G(9)  , C-B(8) -> E์™€ ์—ฐ๊ฒฐ๋œ B๋…ธ๋“œ ์„ ํƒ

    G๋งŒ ์—ฐ๊ฒฐํ•˜๋ฉด ๋๋‚จ : ๊ฐ€์ค‘์น˜๊ฐ€ ์ž‘์€ E์™€ ์—ฐ๊ฒฐ

    A - D - F - E- C- G ๋…ธ๋“œ๋ฅผ ์ „๋ถ€ ์—ฐ๊ฒฐ : ์ตœ์ข… ๊ฐ€์ค‘์น˜ : 5 + 6 + 1 + 2 + 7 + 9 = 30 ์ด ๋œ๋‹ค

     

     

     

    ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„

    1. ์ž„์˜์˜ ์ •์  ์„ ํƒ -> ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ง‘ํ•ฉ์— ์‚ฝ์ž…
    2. ์„ ํƒ ์ •์ ์— ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ์„ ๊ฐ„์„  ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž… -> ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ edge ์ถ”์ถœ
       if ๊ฐ„์„ ์— ์—ฐ๊ฒฐ๋œ ์ธ์ ‘ ์ •์ ์ด ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ง‘ํ•ฉ์— ์žˆ๋‹ค๋ฉด ์‚ฌ์ดํด์ด ์ƒ๊ธฐ๋ฏ€๋กœ ์„ ํƒ ์•ˆํ•จ
       else ๊ฐ„์„ ์„ ์—ฐ๊ฒฐํ•˜๊ณ  mst์— ๊ฐ„์„  ์ •๋ณด ์‚ฝ์ž…
    3. ์ถ”์ถœํ•œ ๊ฐ„์„ ์„ ๋ฆฌ์ŠคํŠธ์—์„œ pop
    4. ๊ฐ„์„  ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋นŒ๋•Œ๊นŒ์ง€ 2-3 ์„ ๋ฐ˜๋ณต

     

    ๊ตฌํ˜„์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ

    ๋…ธ๋“œ ํด๋ž˜์Šค

    public static class Node implements Comparable<Node>{
    int weight, node1, node2;
    //setter method ๊ตฌํ˜„
    @Override
    public int compareTo(Node node){
    return this.weight - node.weight;
    }
    }

     

    Priority Queue์‚ฌ์šฉ

    ๋‹ค์ต์ŠคํŠธ๋ฆฌ์ฆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋•Œ์ฒ˜๋Ÿผ, ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์†Œํž™์„ ๊ตฌํ˜„ํ•œ๋‹ค

    import java.util.PriorityQueue;

    ํ ์ƒ์„ฑ ๋ฐ ์ถ”๊ฐ€

    PriorityQueue<Node> p = new PriorityQueue<>();
    p.offer(new Node (2 , "a", "b")); //๊ฐ€์ค‘์น˜ : 2, ์—ฐ๊ฒฐ๋œ ๋‘ ๋…ธ๋“œ

     

    HashMap ์‚ฌ์šฉ

    Hashmap์˜ containsKey() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๊ฐ„์„ ์— ์—ฐ๊ฒฐ๋œ ์ธ์ ‘ ์ •์ ์ด ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ ์ง‘ํ•ฉ์— ์ด๋ฏธ ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

    HashMap<String, ArrayList<Node>> graph = new HashMap<>();
    graph.put("a", new ArrayList<Node> ()); // a๋ฅผ ํ•ด์‰ฌ๋งต์— ์‚ฝ์ž…
    // ํ›„์— a๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
    graph.getOrDefault("a", new ArrayList<Node>());

     

    ์ž๋ฐ” ์ฝ”๋“œ ๊ตฌํ˜„

    ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ฝค ๋งŽ์•„์„œ ๋ณต์žกํ•˜๋‹ค..

    ๋จผ์ €, ๋Œ€๋žต์ ์ธ ์ฝ”๋“œ์˜ ํ๋ฆ„์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

    import java.util.HashMap;
    import java.util.PriorityQueue;
    public class PrimPath {
    //declare lists
    //Node class
    public ArrayList<Node> prime(String startNode, ArrayList<Node> ndoes){
    //๋ฆฌ์ŠคํŠธ ์„ ์–ธ
    //priority ํ ์„ ์–ธ
    //์ดˆ๊ธฐํ™”
    //๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค ์—ฐ๊ฒฐ๋œ ๊ฐ„์„  ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€
    //์šฐ์„ ์ˆœ์œ„ํ์— candiateEdgeList๋ฅผ ์ถ”๊ฐ€
    //์šฐ์„ ์ˆœ์œ„ํ๊ฐ€ ๋นŒ๋•Œ๊นŒ์ง€ 2-3 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ˜๋ณต
    }
    }

     

    ๊ฐ•์˜ ์™ธ์— ๋‹ค๋ฅธ ์ž๋ฃŒ๋“ค์„ ์ฐพ์•„๋ณด๊ณ  ์ข€ ๋” ์‰ฌ์šด ๋ฐฉ์‹์ด ์žˆ๋‹ค๋ฉด ๋‹ค์‹œ ์ž๋ฐ” ์ฝ”๋“œ ๊ตฌํ˜„์„ ์˜ฌ๋ฆฌ๋„๋ก ํ•˜๊ฒ ๋‹ค.

    ๊ฐ•์˜ ์ฝ”๋“œ๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ์“ฐ์—ฌ์„œ ๋ณต์žกํ•œ๊ฒƒ ๊ฐ™๋‹ค.

     


    ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๐Ÿ‘‰ https://bit.ly/3FVdhDa

     

    ์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ | ํŒจ์ŠคํŠธ์บ ํผ์Šค

    ๋”ฑ 5์ผ๊ฐ„ ์ง„ํ–‰๋˜๋Š” ํ™˜๊ธ‰์ฑŒ๋ฆฐ์ง€๋กœ ์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰๋ฐ›์œผ์„ธ์š”! ๋” ๋Šฆ๊ธฐ์ „์— ์ž๊ธฐ๊ณ„๋ฐœ ๋ง‰์ฐจ ํƒ‘์Šน!

    fastcampus.co.kr

    ๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    728x90
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€