๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์ž๋ฃŒ ๊ตฌ์กฐ] ์ž๋ฐ”๋ฅผ ์ด์šฉํ•œ ๊ทธ๋ž˜ํ”„์˜ ๊ตฌํ˜„-์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„ :: Graph implementation by using adjacency List in java.

by Wonit 2020. 6. 25.

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ทธ๋ž˜ํ”„์˜ ๊ฐ ์ •์ ์— ์ธ์ ‘ํ•œ ์ •์ ์„ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋…ธ๋“œ๋Š” ์ธ์ ‘ ์ •์  ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ, ๊ทธ๋ž˜ํ”„์—๋Š” ์ด๋Ÿฌํ•œ ๊ฐ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ํ—ค๋” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ–๋Š” ๋ฐฐ์—ด๋กœ ๊ฐ–๋Š”๋‹ค.
์ด ๋ง์€ ์ •์ ์˜ ๋ฒˆํ˜ธ๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๊ฐ ์ •์ ์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์†Œ๋ฆฌ์™€ ๊ฐ™๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ด€๊ณ„๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ง•

n๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด n^2๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ ์–‘์ด ํ•„์š”ํ–ˆ๋˜ ์ธ์ ‘ ํ–‰๋ ฌ๊ณผ ๋‹ฌ๋ฆฌ, ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ํ•„์š”ํ•œ ๋งŒํผ๋งŒ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์žก์•„๋จน๋Š”๋‹ค. ๋˜ํ•œ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ๋„ ์ƒ์ˆ˜์— ๊ฐ€๊นŒ์šด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ์–ด๋–ค ๋…ธ๋“œi์™€ j์˜ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ๋ณด๋ ค๋ฉด ๋ชจ๋“  ์›์†Œ๋ฅผ ๋Œ์•„์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ์— ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์˜ ๊ตฌํ˜„

class Adjacency_List {
    private LinkedList<Object>[] adjLists;
    private int vertex;

    private static class GraphNode {
        int vertex;
        GraphNode link;
    }

    GraphNode[] head = new GraphNode[10];
    int totalVertex = 0;

    void  insertVertex(int v){
        totalVertex ++;
    }

    void insertEdge(int v1, int v2) {
        if(totalVertex <= v1 || totalVertex <= v2){
            System.out.println("๊ทธ๋ž˜ํ”„์— ์—†๋Š” ์ •์  ์ž…๋‹ˆ๋‹ค.");
        }else {
            GraphNode node = new GraphNode();
            node.vertex = v2;
            node.link = head[v1];
            head[v1] = node;
            
        }
    }
}

๋Œ“๊ธ€