๐ ์๊ณ ๋ฆฌ์ฆ ์ค๊ฐ๊ณ ์ฌ ์ ๋ฆฌ
์ค๊ฐ๊ณ ์ฌ ์ค๋น
1
directed graph๋ n๊ฐ์ vertex๋ฅผ ๊ฐ์ง ๋ n(n-1)๊ฐ์ edge๋ฅผ ๊ฐ์ง ์ ์๋ค. ๋ฐฉํฅ์ฑ์ด ์์ผ๋ ๋ชจ๋ vertex๊ฐ ์์ ์ ใ [์ธํ ๋ค๋ฅธ vertex๋ก ๊ฐ๋ edge๋ฅผ ๋ชจ๋ count
undirected graph๋ n๊ฐ์ vertex๋ฅผ ๊ฐ๋ ๊ทธ๋ํ๋ ์ต๋ n(n-1)/2๊ฐ์ edge๋ฅผ ๊ฐ์ง ์ ์๋ค. ๋ฐฉํฅ์ฑ์ด ์๊ธฐ๋๋ฌธ์ ์ค๋ณต๋๋ ๊ฑฐ ๊ณ ๋ คํด์ 2๋ก๋๋ ์ค.
์๋ธ๊ทธ๋ํ : ํ ๊ทธ๋ํ์ ๋ํด ๊ทธ๋ํ์ ๋ชจ๋ vertex์ ๊ทธ๋ฅผ ์ด์ ์ ์๋ ์์ค์ edge๋ค์ ๊ฐ์ง๊ณ ์๋ ๋ค๋ฅธ ๊ทธ๋ํ
๊ฒฝ๋ก : edge๋ฅผ ํตํด ์ฐ๊ฒฐ ๋๋ vertex์ ์ฐ์
์ฌ์ดํด : ๊ฒฝ๋ก์ ์์๊ณผ ๋์ด ๊ฐ์ผ๋ฉด ์ฌ์ดํด
acyclic : ์ฌ์ดํด์ด ์๋ ๊ทธ๋ํ
์ฌํ : ๊ฒฝ๋ก์์ ๋ฐฉ๋ฌธํ๋๊ณณ์ ์ฌ๋ฐฉ๋ฌธํ์ง ์์ผ๋ฉด ์ฌํ
๊ฐํ๊ฒ ์ฐ๊ฒฐ๋ ์์ : ์ค๊ฐ๋๊ฒ ๋ชจ๋ ์์ผ๋ฉด ๊ฐํ๊ฒ ์ฐ๊ฒฐ๋๊ฒ
degree : indegree ๋ค์ด์ค๋ edge ๊ฐ์, outdegree ๋๊ฐ๋ edge ๊ฐ์ ๋๊ทธ๋ฆฌ ๋ค ๋ํด์ ๋ฐ๋๋๋ฉด edge์๊ฐ ๋๋ค. ์๋ indegree๋ ๊ณง outdegree์ด๊ณ ๊ทธ ์ญ๋ ์ฑ๋ฆฝํ๊ธฐ ๋๋ฌธ์..
matrix graph์ ๊ณต๊ฐ ๋ณต์ก๋๋ O(n^2), ์๊ฐ๋ณต๋ต๋๋ O(n^2)
2-1
find์ ์๊ฐ๋ณต์ก๋๊ฐ O(n^2)์. ๋ฐ๋ผ์ ์ต์ ํํด ์ค ํ์๊ฐ ์๋ค.
weighting rule : unionํด์ค ๋ ํฉ์น๋ ๋ set์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํด์ union ํด์ฃผ์. ํ๋ฅ ์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ํฐ set๊ฐ ๊ธธ์ด๊ฐ ๊ธธ ๊ฐ๋ฅ์ฑ์ด ํผ. ๊ธธ์ด๊ฐ ๊ธด set์ ์งง์ set์ unionํด์ฃผ๋ํธ์ด ์ข๋ค
public void union(int aMemberA, int aMemberB){
int rootOfA = this.find(aMemberA);
int rootOfB = this.find(aMemberB);
int sizeOfA = this.sizeOfSetFor(rootOfA);
int sizeOfB = this.sizeOfSetFor(rootOfB);
if(sizeOfA < sizeOfB){
this.setParentOf(rootOfA, rootOfB);
this.setSizeOf(rootOfB, sizeOfA + sizeOfB);
}
else{
this.setParentOf(rootOfB, rootOfA);
this.setSizeOf(rootOfA, sizeOfA + sizeOfB);
}
}
collapsing rule : find์์ ์ฐพ์์ง๋ ๋ชจ๋ vertex์ ๋ถ๋ชจ๋ฅผ root๋ก ๋ง๋ค์ด์ ๋์ด๋ฅผ ๋ฎ์ถ๋๊ฒ.
public int find(int aMember){
int rootCandidate = aMember;
while(rootCandidate < this.graph().numberOfVertices() && this.parentDoesExist(aMember)){
rootCandidate = this.parentOf(rootCandidate);
}
int root = rootCandidate;
int child = aMember;
int parent = this.parentOf(child);
if(parent >= 0){
while(parent != root){
this.setParentOf(child, root);
child = parent;
parent = parentOf(child);
}
}
return root;
}
2-2
AdjacencyList์ ๋ชจ๋ Edge๋ฅผ ํ์ธํ๊ธฐ ์๊ฐ๋ณต์ก๋ = O(n + e) โ ์์ ๋ณต์ก๋ Adjacency List ๊ณต๊ฐ๋ณต์ก๋ O(n+e), ์๊ฐ ๋ณต์ก๋ O(n+e)
๋ชจ๋ vertex์ degree๋ค์ ํ์ธํ๋ค.
DFS : Depth First Search ๊น์ด ์ฐ์ ํ์ : ๋ฐฉ๊ธ ํ์ธํ vertex ์ค ๋ฐฉ๋ฌธ ์ํ ๋ค๋ฅธ vertex๋ก ์ด๋, ๋ชจ๋ ๋ฐฉ๋ฌธํ๋ค๋ฉด ์๋๊ธธ๋ก ๋์๊ฐ adjacencyList์ ๊ฒฝ์ฐ O(e), matrix์ ๊ฒฝ์ฐ O(n^2)
BFS : Breadth First Search ๋๋น ์ฐ์ ํ์ : ์์ vertex๋ฅผ ํ์ ๋ฃ๋๋ค. ํ๋ฅผ pop์ํค๊ณ pop๋ vertex์ ์ธ์ vertex๋ฅผ ๋ชจ๋ add, pop โ ์ธ์ ๋ชจ๋add, popโ์ธ์ add๋ฐ๋ณตํด์ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ์ ๋จ์ ์์๊ฐ ์์ ๋ ๊น์ง ๋ฐ๋ณตํ๋ค. ๊ทธ๋ผ ๋ชจ๋ vertex๋ฅผ ์ํํ ๊ฒ.
์์น ํ๊ธฐ์์๋ BFS๋ฅผ ์ด์ฉ, ํ์ฅ ํธ๋ฆฌ์์๋ DFS์ฌ์ฉ
3
spanning tree, minimum cost spanning tree, greedy algorithm
spanning tree : ๋ชจ๋ vertex๊ฐ ํ๋์ set์ ์์นํ (component ํ๋๋ก ์ด๋ค์ง) ํธ๋ฆฌ
์ด๋ ํ ์ปดํฌ๋ํธ์ ์คํจ๋ํธ๋ฆฌ๋ ๊ทธ ์ปดํฌ๋ํธ(ํธ๋ฆฌ)์ ์๋ธํธ๋ฆฌ์ด๋ค.
DFS๋ BFS๋ฅผ ํตํด ์ฐพ์์ง๋๊ฒ ๊ฒฐ๋ก ์ ์ผ๋ก ํ์ฅ ํธ๋ฆฌ๋ผ๊ณ ๋ณผ ์ ์์.
์ฆ ํ๋ฒ ๊ฐ๊ณณ์ ๋ค์ ์๊ฐ๋, ๊ทธ๋ํ์์ ํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ธ๊ฒ ์คํจ๋ํธ๋ฆฌ. ๊ทผ๋ฐ ๊ทธ ๊ณผ์ ์ DFS๋กํ๋ BFS๋กํ๋์ ์ฐจ์ด๊ฐ ์๋ ๊ฒ. ๊ทธ๋ ๊ฒ ์ฐพ์์ ธ์ ๋จ๊ฒ๋ edge๋ฅผ tree edge, ์ฌ์ฉํ์ง ์๊ฒ๋ edge๋ฅผ back edge ๋ผ๊ณ ํ๋ค. ๋น์ฐ tree edge + back edge๋ ๊ธฐ์กด graph์ edge๊ฐ ๋๋ค.
back edge๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๊ทธ edge๋ฅผ ์ฐ๋ฉด ๋ฐฉ๋ฌธํ๋ vertex๋ฅผ ์ฌ ๋ฐฉ๋ฌธ ํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค๋ฅธ ๋ง๋กํ๋ฉด ํด๋น edge๋ cycle์ ๋ง๋ค์ด๋ด๋ edge๋ผ๋ ์๋ฏธ๊ฐ ๋๋ค.
minimum cost spanning tree : ์ต์ ๋น์ฉ ํ์ฅ ํธ๋ฆฌ : ์ต์์ ๋น์ฉ์ ๊ฐ๋ ๊ฒฝ๋ก๋ก ์ด๋ค์ง ํ์ฅ ํธ๋ฆฌโ ์ด๋ป๊ฒ ์ฐพ์๊ฒ์ธ๊ฐ? kruskal , primโs sollinโs ๊ฐ ์์ง๋ง kruskal์ ๋ค๋ฃฌ๋ค.
์ฃผ์ด์ง ์ํฉ์์ ๊ฐ์ฅ ์ ์ cost๋ฅผ ๊ฐ์ง edge๋ฅผ ํ๊ณ ๊ฐ๋ฉฐ spanning tree๋ฅผ ๋ง๋ ๋ค. ์ฆ ์ฃผ์ด์ง ์ํฉ์์ ์ต์ ์ ์ ํ์ ํ๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด๋ ๊ฒ ํ๊ณ ๋๋ฉด ๋ชจ๋ edge์ cost ํฉ์ด ์ต์๋ผ๋๊ฑด ๋ณด์ฅํ ์ ์์ง๋ง, ์ต์ํ ๊ทธ ์๊ฐ์๊ฐ์๋ ์ต์ ์ ์ ํ์ ํ๋ค๊ณ ๋ณผ ์ ์๋ค.
kruskal algorithm : ๊ฐ vertex๋ ํ๋ฒ ์ฉ ๋ฐฉ๋ฌธํ๋ค. n๊ฐ vertex๊ฐ ์์ผ๋ฉด n-1๊ฐ์ edge๋ง์ ๋ฝ๋๋ค. ์ผ๋จ ๋ชจ๋ edge๋ฅผ cost ์ ์์์ผ๋ก ์ต์์ฐ์ ์์ ํ์ ๋ฃ๊ณ ํ์์ ๋นผ๋ฉด์ spanning tree๋ฅผ ๋ง๋ค์ง ์๋ ์ ์์๋ง ๋ฐ์์ฃผ๋ฉด ๋จ. โ ์ฌ์ดํด์ ๋ง๋ค์ง ์๋๋ก
time complexity of Kruskal Algorithm = O(e log e)
inplement : ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ๋ โ ์์ ์๋๊ฑธ ํ์์ ์ผ๋ก ์ ์ํด์ค์ผํจ ์ธํฐํ์ด์ค์์๋ ๊ธฐ๋ฅ์ ์ ์ํ์ง ์๋๋ค. extend : ํด๋์ค(์ถ์ ํด๋์ค ํฌํจ)๋ฅผ ์์๋ฐ์ ๋ โ ๊ทธ๋ฅ ์ธ๊ฑฐ๋ ๊ทธ๋ฅ ์ฐ๋ฉด๋๊ณ ์์ ํ๊ณ ์ถ์ผ๋ฉด ์ค๋ฒ๋ผ์ด๋ํด์ฃผ๋ฉด ๋๋ค.
ํด๋์ค : ๊ฐ์ ธ๋ค ์ฐ๋์ง ์ค๋ฒ๋ผ์ด๋ํ๋์ง ์๋ฌดํผ ์ฐ๋ฉด๋๋ค! ์ธํฐํ์ด์ค : ์ ์ธ๋ ํจ์๋ฅผ ๋ฌด์กฐ๊ฑด ๊ตฌํํด์ผํด! ์ถ์ํด๋์ค : ๊ฐ์ ธ๋ค ์ฐ๋์ง ์ค๋ฒ๋ผ์ด๋ ํ๋์ง! ๋จ, abstract์ธ๊ฑด ๋ฌด์กฐ๊ฑด ๊ตฌํํด์ผํด!
4
shortest path : ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
Weighted Directed Edge๋ก ๊ตฌ์ฑ์ด ๋ ๊ทธ๋ํ์์ ์์์ ์ด ์ฃผ์ด์ง ๋ ์ต๋จ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๋ค. ๋ค์ vertex๊ฐ ์ ํด์ก์๋ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ์ ๋ฐ์ดํธํด์ ๊ทธ ์ค ์ต๊ณ ์ ์ ํ์ ํ๋ค. ์ฆ ๋งค ์๊ฐ ์ต์์ ์ ํ์ ํ๋ ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ์ ์ผ์ข ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
์์ ๋น์ฉ์ ๊ฐ๋ edge๋ ์์ ์ ์๋ค. ๊ทธ๋ ๊ฒ๋๋ฉด ๊ทธ edge๋ฅผ ๊ณ์ ํต๊ณผํ๋ฉด ๊ณ์ํด์ cost๊ฐ ์ค์ด๋คํ ๋๊น. edge๊ฐ ์์์ ํ๊ธฐํ๊ธฐ์ํด์๋ ๋ฌดํํ ํฐ๊ฐ์ ๊ฐ๋๋ค๊ณ ๊ฐ์ ํ๋ค.
๋งค๋ฒ vertex๋ฅผ ์ฎ๊ฒจ๊ฐ๋๋ง๋ค ์ฎ๊ฒจ์จ vertex์์ ๊ฐ๋์ ๊ฒฝ๋ก์ ๊ธธ์ด์ ์ด๋ฏธ ๊ตฌํด๋จ๋ ๊ฒฝ๋ก ์ค ๋ญ๊ฐ ๋ ์ต๋จ๊ฒฝ๋ก์ธ์ง๋ฅผ ๋น๊ตํด์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ์ ๋ฐ์ดํธ ํด์ค์ผํ๋ค.
time complexity of Dijkstraโs Algorithm = O(n^2)
Transitive Closures : ์ดํํ์
AโB BโC ์ด๋ฉด AโC์ด๋ค. (์ดํ๊ด๊ณ) Closure : ์งํฉ์ ํ์๋ฅผ ๊ฐํด ๋์จ ๊ฒฐ๊ณผ๋ฌผ์ ์งํฉ์ ๋ฃ์ ๋ ์ด๋ ์์ค์ด ๋๋ฉด ๋์ด์ ์๋ก์ด๊ฒ์ด ๋์ค์ง ์๋๋ค ๊ทธ ์ํ๋ฅผ ํ์์ํ๋ผ๊ณ ํ๋ค.
๋์ด์ ์๋ก์ด ๊ฒฝ๋ก๊ฐ ์์ ๋ ๊น์ง ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๊ฒ
Transitive Closure : A+
Reflexive Transitive Closure : A*
5
Activity On Vertex Network์์ vertex๋ ์ผ์ข ์ ํ์๋ฅผ ์๋ฏธํ๋ค. edge๋ ์์๋ฅผ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ AโB์ด๋ฉด A์ ํ์ B๊ฐ ์คํ๋๋, ์ฆ A๊ฐ B์ ์ ํ์, B๊ฐ A์ ํํ์๊ฐ ๋๋ค.(predecessor, successor) ์ง์ ์ ์ผ๋ก ๋ฐ๋ก ์ฐ๊ฒฐ๋ predecessor๋ immediate predecessor๋ผ๊ณ ๋ถ๋ฅธ๋ค.
cartesian product. ๋ ๊ด๊ณ์ ์์๋ฅผ ๋ชจ๋ ๊ณฑํด์ ๋ง๋ค์ด๋ธ ์๋ก์ด ๊ด๊ณ ์งํฉ
partial order : irreflexive (reflexive ํ ์์ ์์), transitive (3๋จ๋ ผ๋ฒ) ๋๊ฐ์ง๋ฅผ ๋ง์กฑ
DAG : Directed Acyclic Graph ์ฌ์ดํด์ ๋ง๋ค์ง ์๋ ์ ํฅ๊ทธ๋ํ partial order๋ฅผ ๋ํ๋ด๊ธฐ์ ์ ๋ฆฌํ๋ค. ์ฌ์ดํด์ด ์์ด์ผํจ!(Acyclic : ์ฌ์ดํด ์๋ค!) ์ค์ ๋ก partial ํ์ง ์๋ค. ๋ชจ๋ transitiveํ๊ฒ ๋ง๋ค์ง ์๊ธฐ ๋๋ฌธ. ๊ทผ๋ฐ ๊ตณ์ด transitive๋ ์๋ง๋ค์ด์ค๋ ๊ฑ ๋ค ์๋ค๊ณ ๊ฐ์ ํ๊ณ ํด์ฃผ๋ฉด ๋จ. transitive closure๋ฅผ ์ด์ฉํด์ ํด๊ฒฐ ๊ฐ๋ฅ
๋ชจ๋ partial order๋ DAG๋ก ํํํด์ค ์ ์์ง๋ง ์ญ์ ์ฑ๋ฆฝํ์ง ์๋๋ค. ๊ฐ์ ์ด ๋ผ์ด์๊ธฐ ๋๋ฌธ.. partial order๋ DAG๋ก ํํํ ์ ์๋ค. DAG์ transitive cloosure๋ partial order์ด/๋ค. ex) R1 = DAG, R2= Partial order ์ด๋ฉด R1์ R2์ ์ํ๊ณ R1์ transitive closure๋ R2์ ๊ฐ๋ค. A^+ : A์ transitive closure. A์ ๋ชจ๋ vertex๊ฐ transitiveํ๊ฒ ๋ ๊ฒ.
Topological sort : ์์ ์ ๋ ฌ. partial order๊ฐ ์ฃผ์ด์ง๋ฉด ๊ทธ๋ฅผ ์ ํ์ ์ธ ์์๋ก ์ ๋ ฌํด์ฃผ๋ ๊ฒ.
immediate predecessor๊ฐ ์๋ vertex๋ก๋ถํฐ ์์ํด์ผ ํ ๊ฒ. ํ์ธํ๋ vertex๋ฅผ ์ ๊ฑฐ, ๊ทธ vertex์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ฃ์ง๋ฅผ ํ์ธ, ๊ทธ ์ค์ ํ vertex๋ฅผ ์ ํ, ์ด ๊ณผ์ ์ ๋ชจ๋ vertex๊ฐ ๋น ์ ธ๋์ฌ ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
adjacency graph๋ก ๊ตฌํํ ๋ ๊ฐ vertex์ immediate predecessor๋ฅผ ๊ธฐ๋กํ๋๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ์ด 0์ธ vertex๋ฅผ ์ฐพ์ ์ด์ฉํ๋๋ก ํ๋ค.
partial order๋ irreflexive ํ๋ฉฐ transitiveํ ๊ด๊ณ์ธ๋ฐ ์ด๋ DAG๋ก ํํ๋ ์ ์์ DAG๋ transitiveํ์ง ์๋ค. irreflexiveํ๋ค ์ฆ no cycle์ธ ๊ทธ๋ํ๋ก ์๋ก ๋ชจ๋ ์ฐ๊ฒฐ๋์ด์์. ์ฌ๊ธฐ์ transitiveํ๋ค๋ ์์ฑ๋ง ๋ํด์ฃผ๋ฉด partial order๊ฐ ๋๊ธฐ๋์๋กฑ, partial order๋ dag๋ก ํํํด์ค ์ ์์.
time complexity of topological sort is O(n+e)
6
๊ด๊ณ๋ ์ผ์ข ์ ์งํฉ์ผ๋ก ๋ณผ ์ ์๋ค. S์ cartesian product SXS๋ S์๋ํด ๊ด๊ณ๋ฅผ ๊ฐ๋๋ค
S = {a, b, c} SXS = {<a, a>, <a, b>, <a, c>, <b, a>, <b, b>, <b, c>, <c, a>, <c, b>, <c, c>} R = {<a, a>, <a, b>, <a, c>, <b, b>, <b, c>, <c, c>}
๊ทธ๋ํ์ ์ ์ฌํ๊ฒ ๋ณผ ์ ์๋ค. ๊ฐ ์์๊ฐ vertex, ๊ด๊ณ๊ฐ edge๋ ๊ฐ๋ค. ๋ฐ๋ผ์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๊ทธ๋ํ G = (V, E)๋ก ๋ํ๋ผ ์ ์๋ค. (V : vertex ์งํฉ, E : edge, ๊ด๊ณ)
Transitivity : ๋ชจ๋ ๋ ธ๋์ ๋ํด XโY์ YโZ์ด๋ฉด XโZ์ธ ๊ฒฝ์ฐ
Reflexivity : ๋ชจ๋ ๋ ธ๋๊ฐ self loop์ ๊ฐ์ง ๋. ์ฆ XโX edge๊ฐ ์์ ๋
Symmetricity : ๋ชจ๋ ๋ ธ๋์ ๋ํด XโY๊ฐ ์์ ๋ YโX๋ ์์ ๋
์ ์ฉํ ๊ด๊ณ : transitivity, reflexivity, symmetricity ๋ชจ๋ ๋ง์กฑํ๋ ๊ด๊ณ (๋๋ฑ๊ด๊ณ)
Set๊ณผ Realation์ ์ ๋ ๊ทธ๋ก๋ถํฐ ์ ์ฉํ ์ ๋ณด๋ฅผ ๋ฝ์๋ด๋๋ฐ ์ฌ์ฉํ ์ ์๋ค.
Equivalance Realation : ๋๋ฑํ ๊ด๊ณ. ์งํฉ S๊ฐ reflexive, symmetric, transitiveํ๋ฉด ๋๋ฑ๊ด๊ณ๋ผ๊ณ ํ๋ค.
S = {a, b, c} SXS = {<a, a>, <a, b>, <a, c>, <b, a>, <b, b>, <b, c>, <c, a>, <c, b>, <c, c>} R1 = {<a, a>, <b, b>, <c, c>, <a, b>, <b, c>, <a, c>} โ Reflexivity : a์ b, c์๋ํด ๋ชจ๋ self loop์ ๊ฐ์ง๊ธฐ๋๋ฌธ์ reflexiveํ๋ค โ Transitivity : aโb, bโc, ์ด๊ณ aโc์ด๋ฏ๋ก transitiveํ๋ค โ Symmetric : aโb์ด์ง๋ง bโa๋ ์์ผ๋ฏ๋ก reflexiveํ์ง ์๋ค โ R1์ ๋๋ฑ๊ด๊ณ๊ฐ ์๋๋ค. R2 = {<a, a>, <b, b>, <c, c>, <a, b>, <b, c>, <a, c>, <b, a>, <c, b>, <c, a>} โ Reflexivity : a, b, c๊ฐ ๋ชจ๋ ์๊ธฐ ์์ ์ผ๋ก์ self loop์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ reflexive โ Transitivity : aโb, bโc, cโa, aโc, cโb, bโc, bโa ์ด๋ฏ๋ก transitive ํ๋ค โ symmetricity : aโb, bโa, bโc, cโb, aโc, cโa ๋ชจ๋ ์๋ค. Symmetricํ๋ค โ R2๋ ๋๋ฑ๊ด๊ณ์ด๋ค.
๋๋ฑํ ๊ด๊ณ๋ก๋ถํฐ ๋๋ฑํ ํด๋์ค๋ค์ ๋ฝ์๋ธ๋ค. ๊ทธ๊ฒ์ด ๋๋ฑํด๋์ค
๋๋ฑ ๊ด๊ณ์ ๊ทธ๋ํ๋ก๋ถํฐ ๋๋ฑํ ํด๋์ค๋ฅผ ๋ฝ์๋ธ๋ค. ์ด ์งํฉ์ ๋๋ฑ๊ด๊ณ๋ก ์ด์ด์ ธ์๊ธฐ ๋๋ฌธ์ vertex๊ฐ์ ์ธ์ ์ฑ์ ๊ณง vertex๊ฐ์ ๋๋ฑ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ๋ฐ๋ผ์ AโB์ด๋ฉด A์ B๋ ๋๋ฑ๊ด๊ณ์ ์๋ ๋๋ฑํด๋์ค, BโC์ด๋ฉด A์ B, C๋ ๋๋ฑ๊ด๊ณ์ ์๋ ๋๋ฑํด๋์ค๊ฐ ๋๋ค. ๋ฐ๋ผ์ ํ vertex์ ์ธ์ vertex์๋ํด, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ธ์ ํ vertex๋ค์ ์ธ์ ํ vertex๋ค์ ๋ํด ๊ฒ์ฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ ๊ฒ ์ธ์ ์ฑ์ด ์ฑ๋ฆฝํ๋ vertex๋ค์ ๋ชจ์๋์๊ฒ์ด ๋๋ฑ ํด๋์ค๊ฐ ๋๋ค. ์ด๋ฏธ ๋๋ฑํด๋์ค๊ฐ ์ฐพ์์ง๊ฑฐ์ ๋๋ฌํ๊ฒ๋๋ฉด ๋๋ฑํด๋์ค ์ฐพ๊ธฐ๋ฅผ ๋ฉ์ถ๋ค.
๋ง์ฝ ๋ค๋ฅธ ๋๋ฑํด๋์ค๋ ์ด์ด์ง๋ค๋ฉด..? ์ด๋ป๊ฒ
list ์ด์ฉ ์ O(n+e) ์ ์๊ฐ๋ณต์ก๋/๊ณต๊ฐ๋ณต์ก๋
6-2
์์ฐจ ํ์ : ์ด๋ฏธ ์ ๋ ฌ ๋์ด์๋ ์๋ฃ๋ฅผ ๋ง ๊ทธ๋๋ก ์์ฐจ์ ์ผ๋ก ํ๋ํ๋ ๋ค ํ์ธํ๋๊ฑฐ โ ์ด๋ ์์์ ํ๋?
๋ฐฐ์ด์ ๋ง์ง๋ง์ ์ฐพ์ผ๋ ค๋ ๊ฐ์ ๋ฃ์ด๋๊ณ ๊ทธ๋ฅ ๋ฐ๋ณต๋๋ ค์ ๋ง์ง๋ง ์ ์ ์ฐพ์์ง๋ฉด ์๋๊ฑฐ ๋ง์ง๋ง์ ์ฐพ์์ง๋ฉด ์์ด์ ๋ง์ง๋ง์ ์ธ์์ ์ผ๋ก ๋ฃ์ด๋ ผ๊ฑฐ ์ฐพ์์ง๊ฑธ๋ก ํ๋ฉด ๋ฏธ๋ฏธํ์ง๋ง ์๊ฐ์ ์ด๋์ ์ป์ ์ ์๋ค. ์ด๊ฑธ sentinel์ด๋ผ๊ณ ํจ. O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๊ธฐ๋๋ฌธ์ ์กด๋๊ฒ๋๋ ค์~
์ด์ง ํ์ : ์ด๋ฏธ ์ ๋ ฌ ๋์ด์๋ ์๋ฃ์์ ์ค๊ฐ๊ฐ์ ๋ฑ ์ ํด๋๊ณ ํ์ํด์ฃผ์ ์ค๊ฐ๋ณด๋ค ์์ผ๋ฉด ์ค๊ฐ ์๋ซ๋ฒ์์์ ๋ค์ ์ด์ง๊ฒ์, ํฌ๋ฉด ์ค๊ฐ ์๋ถ๋ถ์์ ์ด์ง๊ฒ์ ์ด๊ฑธ ๋ฐ๋ณต. ์ต์ ์ ๊ฒฝ์ฐ log n๋ฒ์ ๋น๊ตํด์ผํ๋ค. (ํ๋ฒ ๋น๊ต์ 2๋ฐฐ์์ฉ ๋น๊ต๊ฐ ๋๋๊น..) ๋ฐ๋ผ์ O(logN)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
interpolation search : ์ฐพ์ ๊ฐ์ ์ด์ฉํด ์ด๋์๋ถํฐ ์ฐพ์ ๋๊ฐ์ง๋ฅผ ๊ฒฐ์ ํ๋ค๋ ์์ด๋์ด..
๋ฆฌ์คํธ ๊ฒ์ฆ : ๋ฆฌ์คํธ๊ฐ ๊ฐ์์ง ์๋์ง๋ฅผ ํ์ธ. ์ ๋ ฌ๋์ด์์ง ์๋ค๋ฉด ๋ชจ๋ ์์๋ฅผ ํ์ด์ผํ๋ O(NM)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค. ์ ๋ ฌ์์ผ์ ํ๋ํธ์ด ๋น ๋ฆ ์๋๋ฉด ์ ๋ ฌ์ํค๋ฉด O(NlogN + MlogM)์ธ๋ฐ ์ ๋ ฌ์ด ๋๊ธฐ ๋๋ฌธ์ ๋น๊ต๋ ์์์ ๊ฐ์๋งํผ ์๊ฐ์ ๋ ์๋นํจ O(N + M) ๋ฐ๋ผ์ ์ ์ฒด์ ์ผ๋ก O(NlogN + MlogM + N + M)์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฏ๋ก ์๋ฌด๋ฆฌ ์ปค๋ด์ผ O(max(NlogN, MlogM))์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
7
์ ๋ ฌ : ๋๋ถ๋ถ์ ์ปดํจํ ์๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋๋ฐ ์ฌ์ฉ๋๋ค. ๊ทธ๋์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ข์๊ฑธ ์ฐพ์๋ด๋๊ฒ ๋งค์ฐ ์ค์ํ๋ฐ, ์ํ๊น๊ฒ๋ ๋ชจ๋ ๊ฒฝ์ฐ์๋ํด ์ต์ ์ ์๋๋ฅผ ๋ณด์ฅํ๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ ์ฒ์ฐจ๋ง๋ณ์ด ๋๋ค.
์ฝ์ ์ ๋ ฌ : ๋งค๋ฒ ์ฝ์ ํ๋ฉด์ ์์ด๋ ๋น๊ตํด์ ์์ผ๋ก ๋ณด๋ด์ฃผ๊ฑฐ๋ ๋๋น๋๊ฑฐ๋ ๋ฐ๋ณตํ๋๊ฑฐ. ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๊ฒ ํ๊ธฐ์ํด sentinel์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค. ๋งจ ์์๋ฆฌ๋ฅผ ์์ ๋ฌดํ๋๋ก ์ค์ ํด์ฃผ๋ ๋ฐฉ์. ๊ทผ๋ฐ ์ด๋ฐ๊ฒ๋ณด๋ค ๊ฑ ์ต์๊ฐ์ ์ฐพ์์ ๋ฏธ๋ฆฌ ๋ฐ์๋๊ณ ์์ํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
์ ๋ ฅ์ด ์์์ ์ ๋ ฌ๋ผ์ ๋ค์ด์ค๋ฉด ์ต๊ณ . ๋น๊ตํ๋ค ์๋๋ค.. ๋น๊ตํ๋ค ์๋๋ค.. ์ด๊ฑฐ๋ง ๋ฐ๋ณตํด์ฃผ๋ฉด ๋๋ ์ต์์ ๊ฒฝ์ฐ๋ค. ๊ทธ์น๋ง ์ ๋ ฅ์ด ์์ ํ ๋ค๋ฐ๊ปด์ ๋ค์ด์ค๋ฉด ์ต์ . ๋งค๋ฒ ๋น๊ต์ด๋ ๋น๊ต ์ด๋ ๋น๊ต ์ด๋ ๊ณ์ ํด์ค์ผํจ.
์ ๋ ฌํด์ผํ๋ ๋์์ด 20๊ฐ์ธ์ ๋ฆฌ ์ ๋์ผ ๋ ์ฌ์ฉํ๋ฉด ํจ์จ ์ ์ด๋ค. ์์์ ๋ง์ง ์์ ์์๊ฐ ์ ์์๋ก ํจ์จ์ ์ธ๋ฐ ์ ๋ ฌ ๋์์ด 20๊ฐ ๋ฐ์์๋ ์ด์งํผ ๊ทธ๊ฒ ์ ์ํ ๋๊น
LOO(์๋ฆฌ์ ๋ง๊ฒ ์ ๋ ฌ๋์ง ์์๊ฑฐ)๊ฐ k๊ฐ์ผ๋ ์ฝ์ +๋น๊ต O(N), ์ ๋ ฌํด์ผํ๋๊ฒฝ์ฐ O(KN) ๋ฐ๋ผ์ O(KN + N) = O((K + 1)N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค. K๊ฐ ์ ์์๋ก ๋น์ฐํ ์ข๊ฒ ์ง? K๊ฐ 0์ด๋ฉด O(N), K๊ฐ n์ด๋ฉด O(N^2)๊น์ง๋ ๊ฐ๋ค.
๋งํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ์ธ๋ฑ์ค ์์ง์ด๋๊ฑธ ๊ฐ์ํ์ํค๊ฑฐ๋ ์์ฐจํ์๋์ ์ด์งํ์์ ์ฌ์ฉํ๋ ๋ฑ์ผ๋ก ์ฑ๋ฅ์ ์กฐ๊ธ ๋ ๊ฐ์ ํ ์ ์๋ค..
ํต์ํธ : ๋๋ฐ์ด๋ ์ค ์ปจ์ปค! ์ฝ์ ์ ๋ ฌ์ด stableํ๋ ๋ฐํด ์๋ unstableํ๋ค ๋ณด์ฅ์ ๋ชปํด์ค๋ค? ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ข์ ์ฑ๋ฅ์ ๋ฝ์์ค๋ค. ์ ๋ ฌ์ด ๋์ด์์ผ๋ฉด ์ต์ ์. ํผ๋ฒ์ ์ก๊ณ ๊ทธ๊ฑธ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ ์์์น๊ตฌ๋ค ์ค๋ฅธ์ชฝ์ ํฐ ์น๊ตฌ๋ค์ ๋ฃ์ด์ค๋ค. ์ฌ๊ท์ ์ผ๋ก ํ ์ ์์. ์๋ฌด๊ฑฐ๋ ํผ๋ด์ผ๋ก ์ ํด๋ ๋์ง๋ง, ๋ค๋ฅด๊ฒ ํด์ฃผ๋ํธ์ด ์ข๊ธดํ๋ค. ๊ฐ์ฅ ๋ง์ด์ฐ์ด๋๊ฑด ๋งจ ์ผ์ชฝ๊ฑฐ๋ฅผ ํผ๋ด์ผ๋ก ์ก์์ฃผ๋๊ฑฐ. ์ผ์ชฝ์์ toright๋ก ์ฌ๋ผ๊ฐ๋ฉฐ ์ค๋ฅธ์ชฝ์์ toleft๋ก ๋ด๋ ค๊ฐ๋ฉฐ pivot์ด๋ ๊ฐ์ ๋น๊ตํ๊ณ ์๋ก ๋ฐ๋์ด์ผํ๋๊ฒ ๋์ค๋ฉด ๋ฉ์ถ๊ณ ๋ฐ๊ฟ์ฃผ๊ณ ๋ฐ๋ณต. ๊ทธ๋ฌ๋ค toleft๊ฐ toright๋ฅผ ์ง๋์น๋ฉด ๊ทธ๊ฒ๋ ๋ฌธ์ ๊ฐ์๋๊ฑฐ๋๊น ๋ฐ๊ฟ์ค.
pdf์ ์ ๋ฆฌ์๋์ด์๋ค..๊ทธ๊ฑฐ๋ด
์๊ฐ๋ณต์ก๋ : ํ๊ท ์ ์ธ ๊ฒฝ์ฐ O(NlogN), ์ต์ ์ ๊ฒฝ์ฐ O(N^2)์ธ๋ฐ ๊ทธ๋ฐ๊ฒฝ์ฐ๋ ์ ์์..
๊ณต๊ฐ๋ณต์ก๋ : ์ต์ O(N) ์ต์ O(1), ํ๊ท O(logN). ์์ ๋ฆฌ์คํธ์ ๋ํด์๋ ๋ฐ๋ณต๋ฌธ์ ์จ์ฃผ๋ฉด ๊ณต๊ฐ์ ๋ ์ธ ์ ์๋ค. pivot์ ์์น๋ ์ค๊ฐ๊ฐ์ ์ก์์ค์ผ๋ก์จ ์ต์ ์ ํผํ ์ ์์.
Sentinel : ์ค๋ฆ์ฐจ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ํฐ๊ฐ์ ๋ฏธ๋ฆฌ ์ฐพ์์ ์ค๋ฅธ์ชฝ ๋์ ๋ฐ์๋๋ฉด Sentinel๋ก ์ธ ์ ์๋ฐ.
9
sorting์ ์๋ฌด๋ฆฌ ๋นจ๋ผ๋ด์ผ NlogN์ ๋ชป๋๋๋ค.
๋ฐ์ดํฐ ๊ฐ์๊ฐ n๊ฐ๋ฉด ์ต๋ n!๊ฐ์ leaf๊ฐ ์๊ธด๋ค. logN! + 1๋งํผ์ ๋ฐ๋ณต์ด ํ์ํ๋ค height ์ด k์ด๋ฉด 2^k-1๊ฐ์ ์์ ๊ฐ๋๋ค. โ 2^k-1์ ์์ ๊ฐ์ง๋ log๋ฅผ ์ทจํด 1์ ๋ํ๋ฉด height์ด ๋๋ค. ๋ฐ๋ผ์ N!์ ์์ ๊ฐ์ง๋ฉด logN! + 1์ด height์ด๋๋ค. ๋ฐ๋ผ์ ์ต์ ๋์ด๋ logN!์ด ๋๋ค. logN! = log N(N-1)(N-2)โฆ321 ์ด๊ณ ์ด๋ ์ต์์ ๊ฒฝ์ฐ NlogN์ด๋๋ค.
ํ : ์ ๋ ฅ๋ฐ์๋๋ง๋ค ํ์ ๋ง๋๋๊ฒฝ์ฐ, ์ ๋ ฅ์๋ง๋ค ํ์ธํด์ ์ํ O(NlogN)์ ์๊ฐ๋ณต์ก๋. ํ๊ท ์ ์ผ๋ก O(N)์ ๊ฐ๋๋ค.
n๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ๋ ์ด์งํธ๋ฆฌ์ ์ต๋ ๋์ด๋ log(N + 1)์ด๋ฏ๋ก N๋ฒ์ insert์ ์ต๋ O(NlogN)
์ ๋ ฅ์ด ์๋๋ผ ์ ๋ ฅ๋ฐ์๊ฑธ adjustํ๋๊ฒฝ์ฐ O(N)
์ ๋ ฅ๋ฐ์๊ฑธ adjustํ๋๊ฒ ๋ ๋น ๋ฅผ ๊ฒ ๊ฐ์ง๋ง ์ด์งํผ insertํ ๋ ์ถ๊ฐํ๋๊ฑฐ๋ง ํด๋ O(logN)์ด ํ์ โ ๊ฒฐ๊ตญ์ O(NlogN)์ด๋ค. ํ์ํธ๋ ์ต์ ์ ๊ฒฝ์ฐ๊ฐ O(NlogN)์ด๊ณ ํ๊ท ์ ์ผ๋ก O(N)์ด๋ค. ์ด์ ๋ฌ๋ฆฌ ํต์ํธ๋ ์ต์ ์ ๊ฒฝ์ฐ๊ฐ O(N^2)์ด๊ณ ๊ฑฐ์ ์ด๋ ๊ฒฝ์ฐ์๋ ํ๊ท ์ ์ผ๋ก O(NlogN)์ด๋ฏ๋ก ์ฌ์ค์ ํต์ํธ๊ฐ ๋ ๋น ๋ฅด๊ฒ ๋ค์ํ๊ฒ์ ์ ์ฉ๋ ์ ์๋ค๊ณ ๋ณผ ์ ์๋ค.
summary : ํฌ๊ธฐ๊ฐ 20์ธ์ ๋ฆฌ์ผ๋ O(N^2)์ธ ์ฝ์ ์ ๋ ฌ์, ์๋๋ฉด ๊ฑ ํต์ํธ ๋๋ ค๋ฒ๋ฆฌ์ O(NlogN) ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๊ฑด ์ค๋๊ฑธ๋ฆฐ๋ค. ๊ฐ๋ฅํ๋ฉด ๋งํฌ๋๋ฆฌ์คํธ๋ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์.
๋ณต์ก๋
matrix graph โ ๊ณต๊ฐ๋ณต์ก๋ O(n^2), ์๊ฐ๋ณต์ก๋ O(n^2) List graph โ ๊ณต๊ฐ๋ณต์ก๋ O(n+e), ์๊ฐ๋ณต์ก๋ O(n+e) kruskal ์๊ณ ๋ฆฌ์ฆ โ ์๊ฐ๋ณต์ก๋ O(e log e) dijkstra ์๊ณ ๋ฆฌ์ฆ โ ์๊ฐ๋ณต์ก๋ O(n^2), topological sort ์๊ณ ๋ฆฌ์ฆ โ ์๊ฐ๋ณต์ก๋ O(n+e) equivalence class ์๊ณ ๋ฆฌ์ฆ โ ์๊ฐ๋ณต์ก๋ O(n+e) ์์ฐจํ์ โ O(n) ์ด์งํ์ โ O(n log n) ๋ฆฌ์คํธ๊ฒ์ฆ โ O(n^2) ์ฝ์ ์ ๋ ฌ โ O(n^2) ํต์ ๋ ฌ โ O(n^2), ํ๊ท ์ ์ผ๋ก O(n log n)
Comments