티스토리 뷰
그래프

정점(Vertex, Node) : 데이터를 나타내는 값
간선(Edge) : 정점과 정점을 연결해주는 선 및 사이 관계
차수(Defree) : 하나의 정점에서 연결되어있는 간선의 갯수
그래프와 트리의 차이는 방향성의 차이이다.
그래프는 양방향과 단방향 그래프가 존재하지만 트리는 부모에서 노드로의 단방향만 존재한다.

다음과 같은 그래프를 인접행렬로 나타내는 방법
무방향 그래프
# 1. 넓이 5*5 , 7개의 입력값이 주어진다고 했을때
graph = [[0]*5 for _ in range(5)]
for _ in range(7):
x, y = map(int,input().split())
graph[x-1][y-1] +=1 # 입력값을 1~5로 받았을때 index error 처리
graph[y-1][x-1] +=1 # 방향이 없기 때문에 대칭으로 값 추가
print(graph)
###
[[0, 0, 1, 1, 0],
[0, 0, 1, 1, 1],
[1, 1, 0, 0, 1],
[1, 1, 0, 0, 1],
[0, 1, 1, 1, 0]]
###
방향 그래프
# 1. 넓이 5*5 , 7개의 입력값이 주어진다고 했을때
graph = [[0]*5 for _ in range(5)]
for _ in range(7):
x, y = map(int,input().split())
graph[x-1][y-1] +=1 # 입력값을 1~5로 받았을때 index error 처리
print(graph)
###
[[0, 0, 0, 0, 0],
[0, 0, 1, 1, 0],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 0],
[0, 1, 0, 1, 0]]
###
인접 리스트를 그래프로 나타내는 방법
인접 행렬에 비해 정점이 많고 간선이 상대적으로 적은 상황에서 사용 시 공간을 절약할 수 있다.
무방향 그래프
V, E = 5, 7
graph = [[] for _ in range(V+1)]
for _ in range(E):
x, y = map(int,input().split())
graph[x].append(y)
graph[y].append(x)
print(graph)
###
[[], [3, 4], [3, 5, 4], [1, 2, 5], [1, 5, 2], [2, 4, 3]]
###
방향 그래프
V, E = 5, 7
graph = [[] for _ in range(V+1)]
for _ in range(E):
x, y = map(int,input().split())
graph[x].append(y)
print(graph)
###
[[], [], [3, 4], [1, 5], [1], [2, 4]]
###
인접 행렬 과 인접 리스트 비교

참고
https://www.yes24.com/Product/Goods/91084402
파이썬 알고리즘 인터뷰 - YES24
코딩 테스트와 인터뷰를 준비하는 취준생과 이직자를 위한 알고리즘 문제 풀이 완벽 마스터!세계 최고 온라인 문제 풀이 사이트인 리트코드(LeetCode)의 기출문제 풀이와 분석!『파이썬 알고리즘
www.yes24.com
'개발 > 자료구조 알고리즘' 카테고리의 다른 글
| [자료구조] 원형 큐 (Circular Queue) 구현 (0) | 2023.10.26 |
|---|---|
| [자료구조] Linked List 구현 (0) | 2023.06.05 |
| [자료구조] Binary Tree (0) | 2023.05.25 |
| [자료구조] HashTable 구현 (0) | 2023.05.17 |
댓글