Loading...
2023. 8. 7. 03:56

최소 공통 조상(Lowest Common Ancestor,LCA)문제 기본 해법 배우기1

https://www.youtube.com/watch?v=O895NbxirM8&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=15 https://www.crocus.co.kr/660 LCA(Lowest Common Ancestor) 알고리즘 LCA(Lowest Common Ancestor) 알고리즘이란? LCA 알고리즘이란 영어 해석 그대로 최소 공통 조상을 찾는 알고리즘이고, 두 정점 u, v(혹은 a, b)에서 가장 가까운 공통 조상을 찾는 과정을 말한다. 예를들어 www.crocus.co.kr https://kibbomi.tistory.com/201 최소 공통 조상 (LCA, Lowest Common Ancestor)(C/C++) 여러 자료를 참조하면서 LCA를 ..

2023. 8. 7. 01:13

그래프를 다루는 파이썬의 NetworkX 라이브러리 맛보기

1. NetworkX 그래프를 생성, 변경, 시각화하고 구조와 변화를 분석하는 함수들을 제공하는 파이썬의 라이브러리 속도가 느리나 사용이 편함 비슷한 라이브러리로 Snap.py(아마 Snap이 이름이겠지??)는 속도가 빠르나 사용이 불편하다고함 2. 그래프 시각화 nx.Graph()로 무방향 그래프, nx.DiGraph()로 방향 그래프를 초기화 #그래프의 생성과 초기화 G = nx.Graph() # 방향성이 없는 그래프 DiGraph = nx.DiGraph() # 방향성이 있는 그래프 초기화된 그래프 객체에 add_node를 이용해 그래프에 node를 추가할 수 있음 G.add_node(1) print("Num of nodes in G: " + str(G.number_of_nodes())) print(..

2022. 9. 13. 04:16

트리 이론 기본편3 -이진 트리를 표현하는 방법 + 순회 구현 -

1. 배열을 이용한 이진 트리 표현 루트의 번호를 1로 하고 레벨 n에 대하여 왼쪽부터 오른쪽으로 $2^{n}$부터 시작하여 번호를 부여 노드 번호를 index로 해서 배열에 노드 정보를 저장 완전 이진트리일때만 가능할듯 아니라면 빈 부분은 0으로 채우고 데이터를 넣으면 될것 같은데 조금 복잡해질것 같고 높이 h가 주어진다면.. h의 노드 최대개수는 $2^{h+1}-1$개니까 [0]*$2^{h+1}-1$으로 초기화 노드 개수 n개가 주어진다면 뭐 [0]*(n+1)로 초기화하면 될듯 라고 생각했는데.. 이게 아니야 왜 그런지는 뒤에 쓴다 1-1) 노드 번호의 특징 완전이진트리처럼 번호를 붙이는 방식인 1번부터 n번까지를 왼쪽부터 오른쪽으로 차례대로 붙일때만 성립함 1)레벨 n의 시작 노드 번호는 $2^{n..