์ธ์ ๋ฆฌ์คํธ
์ธ์ ๋ฆฌ์คํธ๋ ๊ทธ๋ํ์ ๊ฐ ์ ์ ์ ์ธ์ ํ ์ ์ ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ํํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋
ธ๋๋ ์ธ์ ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋ฐ, ๊ทธ๋ํ์๋ ์ด๋ฌํ ๊ฐ ์ธ์ ๋ฆฌ์คํธ์ ๋ํ ํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ ๋ฐฐ์ด๋ก ๊ฐ๋๋ค.
์ด ๋ง์ ์ ์ ์ ๋ฒํธ๋ง ์๊ณ ์์ผ๋ฉด ๊ฐ ์ ์ ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฝ๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๋ค๋ ์๋ฆฌ์ ๊ฐ๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ๋์ด์๋ ๊ด๊ณ๋ฅผ ๋ฆฌ์คํธ๋ก ํํํ๋ ๊ฒ์ด๋ค.
์ธ์ ๋ฆฌ์คํธ์ ํน์ง
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;
}
}
}
๋๊ธ