CS

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„ (Graph)

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/

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฃŒ๊ตฌ์กฐ] ํ•ด์‹œ ํ…Œ์ด๋ธ” (Hash Table)  (2) 2024.11.08
[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ผ์ด (Trie)  (0) 2024.11.08
[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ (Tree)  (0) 2024.11.07
[์ž๋ฃŒ๊ตฌ์กฐ] ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ (Linked list)  (0) 2024.10.30
[์ž๋ฃŒ๊ตฌ์กฐ] ํ (Queue)  (0) 2024.10.30
  1. ๊ทธ๋ž˜ํ”„ (Graph) ๋ž€?
  2. ์žฅ๋‹จ์ 
  3. ๊ตฌํ˜„
  4. ์ฐธ๊ณ ์ž๋ฃŒ
moaoh
moaoh
๋‚˜์˜ ์„ฑ์žฅ ์ผ๊ธฐ.
moaoh
๐Ÿถ ๐Ÿพ
moaoh
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • Github
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Algorithm
      • ๊ฐœ๋…์ •๋ฆฌ
      • ๋ฌธ์ œํ’€์ด
    • 42seoul
      • projects
    • CS
    • programming language
      • C++
      • Javascript
      • Go
      • Python
      • Front-end
      • Java
    • Java Spring
    • git
    • ์ผ์ƒ
      • ์ฑ… ์ฝ๊ธฐ

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ
moaoh
[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„ (Graph)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.