CS
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ (Graph)
moaoh
2024. 11. 7. 02:26
๊ทธ๋ํ (Graph) ๋?
- ๊ทธ๋ํ๋ ์ ์ (vertex)๊ณผ ๊ฐ์ (edge)๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ
- ํธ๋ฆฌ (Tree) ์ ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋๊ณ ์๊ฐํ ์ ์๋๋ฐ,
๊ทธ๋ํ์ ๊ฒฝ์ฐ์๋ ํธ๋ฆฌ์ ๋ค๋ฅด๊ฒ ์ ์ ๋ง๋ค ๊ฐ์ ์ด ์์ ์๋ ์๊ณ ๋ถ๋ชจ ์์๊ฐ๋ ์ด ์กด์ฌํ์ง ์๋ ๋ฑ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค. - ์งํ์ฒ ๋ ธ์ ๋ ๋ฑ์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ฑฐ๋ sns์์๋ ๊ณตํต๋ ์น๊ตฌ๋ฅผ ์ฐพ๋ ๋ฑ์ ํ์ฉ๋๋ค.
์ฅ๋จ์
์ฅ์
- ๋ณต์กํ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋งํ ์ ์์ (์์ ๋คํธ์ํฌ, ๊ฒฝ๋ก ํ์ ๋ฑ)
- ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ต๋จ ๊ฒฝ๋ก, ์ฐ๊ฒฐ์ฑ ๋ฑ์ ์ฐพ์ ์ ์์.
๋จ์
- ๊ตฌํ๊ณผ ์ฐ์ฐ์ด ๋ณต์กํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ํผ.
- ์ํ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์์.
๊ตฌํ
<vector>๋ฅผ ์ฌ์ฉํ ๊ตฌํ
#include <iostream>
#include <vector>
class Graph
{
private:
int V;
std::vector<std::vector<int> > adjMatrix;
public:
Graph(const int& n) {
this->V = n;
adjMatrix.resize(V, std::vector<int>(V, 0));
}
~Graph() {};
void addEdge(int u, int v) {
adjMatrix[u][v] = 1; // ๋จ๋ฐฉํฅ
}
void printGraph() {
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
std::cout << adjMatrix[i][j] << " ";
}
std::cout << std::endl;
}
}
};
int main() {
Graph g(5); // 5๊ฐ์ ์ ์ ์ ๊ฐ์ง ๊ทธ๋ํ ์์ฑ
g.addEdge(0, 1); // 0 -> 1
g.addEdge(1, 2); // 1 -> 2
g.addEdge(2, 3); // 2 -> 3
g.addEdge(3, 4); // 3 -> 4
g.printGraph();
return 0;
}
- ๊ทธ๋ํ (graph) ์ ๊ฒฝ์ฐ์๋ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฐฉํฅ ๊ทธ๋ํ (Directed Graph), ๋น๋ฐฉํฅ ๊ทธ๋ํ (Undirected Graph) ๋ฑ ๋ค์ํ๊ฒ ์กด์ฌํ๋ค.
- ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๋ฑ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๊ฒฝ์ฐ์๋ ํ์ฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
https://80000coding.oopy.io/125156cf-79bb-48da-82ae-1f2ee7896bb8
https://www.geeksforgeeks.org/applications-of-graph-data-structure/