Toggle navigation
Toggle navigation
This project
Loading...
Sign in
박권수
/
Algorithm_HW5
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
박권수
2020-11-01 17:43:13 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
8ce93de601b874a3252564452d132309753f1a11
8ce93de6
1 parent
720b76aa
feature1.0.2 : finish Kruskal Algorithm = complete assignment5-1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
5 deletions
HW5_박권수_2015104173.py
HW5_박권수_2015104173.py
View file @
8ce93de
...
...
@@ -4,15 +4,18 @@ import numpy as np
parent
=
dict
()
rank
=
dict
()
#초기화 함수이다.
def
make_singleton_set
(
v
)
:
parent
[
v
]
=
v
rank
[
v
]
=
0
#해당 노드를 가지고 있는 집합을 리턴한다.
def
find
(
v
)
:
if
(
parent
[
v
]
!=
v
)
:
parent
[
v
]
=
find
(
parent
[
v
])
return
parent
[
v
]
#r1, r2 집합을 합집합 연산한다.
def
union
(
r1
,
r2
)
:
if
(
r1
!=
r2
)
:
if
(
rank
[
r1
]
>
rank
[
r2
])
:
...
...
@@ -25,7 +28,6 @@ def union(r1, r2) :
def
Kruskal
(
graph
)
:
#n = 정점의 수 / m = 엣지의 수
n
=
len
(
graph
[
'vertices'
])
m
=
len
(
graph
[
'edges'
])
#엣지를 전부 찾은 후 비내림차순으로 정렬한다.
edge_list
=
list
(
graph
[
'edges'
])
...
...
@@ -35,22 +37,29 @@ def Kruskal(graph) :
for
v
in
graph
[
'vertices'
]
:
make_singleton_set
(
v
)
#리턴할 edges 집합
F
=
set
()
index
=
0
while
len
(
F
)
<=
n
-
1
:
while
len
(
F
)
<
n
-
1
:
#e = edges 이음선
e
=
edge_list
[
index
]
#p , q는 각각의 집합들을 가리키는 포인터이다.
p
=
find
(
e
[
1
])
q
=
find
(
e
[
2
])
if
(
p
==
q
)
:
#만약 p와 q가 다른 집합이면 서로를 합집합한다.
if
(
p
!=
q
)
:
union
(
p
,
q
)
F
.
add
(
e
)
index
+=
1
index
+=
1
return
F
#Kruskal Algorithm
graph
=
{
'vertices'
:
[
'A'
,
'B'
,
'C'
,
'D'
,
'E'
],
'edges'
:
set
([
...
...
@@ -65,4 +74,4 @@ graph = {
}
mst
=
Kruskal
(
graph
)
print
(
mst
)
\ No newline at end of file
print
(
'Kruskal Algorithm : '
,
"
\n
"
,
mst
)
\ No newline at end of file
...
...
Please
register
or
login
to post a comment