y-seo
y-seo의 딩코 기록들
y-seo
  • 분류 전체보기 (174)
    • Computer Science (49)
      • Database Design & Query Lan.. (10)
      • Network Security (16)
      • Software Engineering (6)
      • Computer Network (17)
    • Spring (50)
      • Spring-Basic (11)
      • SpringBoot-AWS (7)
      • SpringBoot&JPA (22)
      • 토비의 스프링 (3)
      • + α (7)
    • Cloud (22)
      • AWS (4)
      • GCP (1)
      • ElasticSearch (17)
    • Test (3)
    • Project (4)
    • Algorithm (24)
      • 개념 (9)
      • 문제풀이 (15)
    • AI (3)
      • About (2)
      • AIDU ez (1)
    • Error (4)
    • ETC (1)
    • Review (8)
    • IT (5)
      • SQLD (4)
      • ADsP (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

태그

  • 인프런
  • Python
  • 보안
  • springboot
  • 스프링부트
  • 파이썬
  • 알고리즘
  • 컴퓨터 네트워킹 하향식 접근
  • Spring
  • 스프링
  • 네트워크
  • algorithm
  • 자바
  • java
  • baekjoon
  • 백준
  • 김영한
  • JPA
  • 알기 쉬운 정보보호개론 3판
  • 네트워크보안

티스토리

hELLO · Designed By 정상우.
y-seo

y-seo의 딩코 기록들

[알고리즘][파이썬] 그래프 / graph
Algorithm/개념

[알고리즘][파이썬] 그래프 / graph

2023. 1. 25. 00:24

그래프 (graph)

  • 원소 간의 관계를 표현한 자료구조

그래프의 기본 구조

 

  • 노드(node)=정점(vertex)와 간선(edge)으로 표현
  • 두 노드가 인접하다 : 두 노드가 간선으로 연결되어 있다
  • 노드1과 노드3은 인접하다
  • 그래프 탐색 : 하나의 노드를 시작으로 다수의 노드를 방문하는 것

 


그래프의 표현

1. 인접 행렬 (Adjacency Matrix)

  • 2차원 배열로 그래프의 연결관계를 표현하는 방식
  • 2차원 배열에 각 노드가 연결된 형태를 기록하는 방식
  • 연결되어 있지 않은 노드끼리는 무한의 비용으로 작성 (999999999,987654321)
  • 자기자신은 비용이 0

 

  0 1 2
0 0 무한 5
1 무한 0 3
2 5 3 0

 

INF = 999999999 #무한

graph = [
	[0, INF, 5]
   	[INF, 0, 3]
	[5, 3, 0]
]

print(graph)

2. 인접 리스트 (Adjacency List)

  • 리스트로 그래프의 연결 관계를 표현하는 방식
  • 모든 노드에 연결된 노드에 대한 정보를 차례대로 연결하여 저장

  • '연결 리스트'라는 자료구조를 이용해 구현
  • 파이썬은 기본 자료형인 리스트 자료형의 append() 함수 이용
graph = [[] for _ in range(3)] #행이 3개인 2차원 리스트

graph[0].append((2,5)) #노드0에 연결된 노드 정보
graph[1].append((2,3)) #노드1에 연결된 노드 정보
graph[2].append((0,5)) #노드2에 연결된 노드 정보
graph[2].append((1,3))

print(graph)

∴ 메모리 측면에서 인접리스트 방식이 연결된 정보만을 저장하기 때문에 효율적

∴ 속도 측면에서 인접리스트 방식은 연결된 데이터를 하나씩 확인해야 하기 때문에 느림

 

저작자표시

'Algorithm > 개념' 카테고리의 다른 글

[알고리즘][파이썬] Exhaustive Search / 완전 탐색  (0) 2023.07.08
[알고리즘] 알고리즘 스터디 계획 / Algorithm Study Plan  (0) 2023.07.08
[알고리즘][파이썬] 재귀함수 / Recursive Function  (0) 2023.01.24
[알고리즘][파이썬] 큐, 스택 / queue, stack  (0) 2023.01.06
[알고리즘] 알고리즘 스터디 계획 / Algorithm Study Plan  (0) 2023.01.06
    'Algorithm/개념' 카테고리의 다른 글
    • [알고리즘][파이썬] Exhaustive Search / 완전 탐색
    • [알고리즘] 알고리즘 스터디 계획 / Algorithm Study Plan
    • [알고리즘][파이썬] 재귀함수 / Recursive Function
    • [알고리즘][파이썬] 큐, 스택 / queue, stack
    y-seo
    y-seo

    티스토리툴바