<jupyter_start><jupyter_text>1. 그래프 : Set of Vertex(vertices) and Edge- python package : networkx<jupyter_code>import networkx as nx
g1 = nx.DiGraph()
g1.add_node("a")
g1.add_node(1)
g1.add_node(2)
g1.nodes()
g1.add_edge(1,"a")
g1.add_edge(1,2)
g1.edges()
import graphviz
import pydot
# from IPython.core.display import Image
# from networkx.drawing.nx_pydot import to_pydot

# d1 = to_pydot(g1)
# d1.set_dpi(300)
# d1.set_rankdir("LR")
# d1.set_margin(1)
# Image(d1.create_png(),width=300)
len(g1)
for n in g1.neighbors(1):
    print(n)
2 in g1.neighbors(1), 1 in g1.neighbors(2), "a" in g1.neighbors(2), "a" in g1.neighbors(1)<jupyter_output><empty_output><jupyter_text>1. 워크 : 다른 노드로 도달하기 위한 인접한 노드의 순서열 2. 패스 : 워크 중 동일한 노드를 중복하지 않는 순서열 3. 사이클 : 패스 중 시작점 = 끝점 4. 어사이클릭 그래프 : 사이클이 없는 그래프<jupyter_code>g3 = nx.Graph()
g3.add_node("a")
g3.add_node("b")
g3.add_node("c")
g3.add_node("d")
g3.add_node("e")
g3.add_node("f")
g3.add_edge("a", "b")
g3.add_edge("a", "c")
g3.add_edge("b", "c")
g3.add_edge("c", "d")
g3.add_edge("d", "e")
g3.add_edge("c", "e")
# 두 노드 간 패스 존재 여부 확인 : has_path, shortest_path
nx.has_path(g3, "a", "b")
nx.has_path(g3, "a", "e")
nx.has_path(g3, "a", "f")
nx.shortest_path(g3,"a","e")<jupyter_output><empty_output><jupyter_text>5. 클리크 : 모든 노드끼리 edge 존재하면 그 노드 집합을 클리크라고 함- 최대 클리크 : 클리크에 인접한 노드를 하나 더 추가시, 클리크가 깨지면 최대클리크 라고 한다.<jupyter_code>g4 = nx.Graph()
g4.add_node("a")
g4.add_node("b")
g4.add_node("c")
g4.add_node("d")
g4.add_node("e")
g4.add_node("f")
g4.add_edge("a", "b")
g4.add_edge("a", "c")
g4.add_edge("b", "c")
g4.add_edge("b", "d")
g4.add_edge("c", "d")
g4.add_edge("d", "e")
g4.add_edge("d", "f")
g4.add_edge("e", "f")<jupyter_output><empty_output><jupyter_text>클리크를 찾는 명령- cliques_containing_node( )- enumerate_all_cliques( ) : 모든 클리크 찾기- find_cliques( ) : 모든 최대 클리크 찾기<jupyter_code>nx.cliques_containing_node(g4,["a"])
[c for c in nx.enumerate_all_cliques(g4)]
[c for c in nx.find_cliques(g4)]<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.20030581039755352, 'fraction_numerical': 0.040774719673802244, 'mean_word_length': 5.699658703071672, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '233281', 'license': 'MIT', 'n_tokens_mistral': 1143, 'n_tokens_neox': 1263, 'n_words': 193, 'path': '1.Study/2. with computer/1.Math_code/6. Graph/.ipynb_checkpoints/1. Basic Graph term_vertex, edge, walk, cycle, path, clique-checkpoint.ipynb', 'repo_name': 'jskim0406/Study', 'size': '1962'}