Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
77
Task/Dijkstras-algorithm/Ring/dijkstras-algorithm.ring
Normal file
77
Task/Dijkstras-algorithm/Ring/dijkstras-algorithm.ring
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# Project : Dijkstra's algorithm
|
||||
|
||||
graph = [["a", "b", 7],
|
||||
["a", "c", 9],
|
||||
["a", "f", 14],
|
||||
["b", "c", 10],
|
||||
["b", "d", 15],
|
||||
["c", "d", 11],
|
||||
["c", "f", 2],
|
||||
["d", "e", 6],
|
||||
["e", "f", 9]]
|
||||
|
||||
dbegin = "a"
|
||||
dend = "e"
|
||||
powlen = pow(2,len(graph)) - 1
|
||||
dgraph = list(powlen)
|
||||
dtemp = list(powlen)
|
||||
lenold = 10
|
||||
lennew = 0
|
||||
sumold = 30
|
||||
sumnew = 0
|
||||
|
||||
powerset(graph)
|
||||
|
||||
for n = 1 to len(dgraph)
|
||||
dtemp[n] = str2list(substr(dgraph[n], " ", nl))
|
||||
next
|
||||
|
||||
for n = 1 to len(dtemp)
|
||||
if len(dtemp[n]) > 3 and dtemp[n][1] = dbegin and dtemp[n][len(dtemp[n])-1] = dend
|
||||
flag = 1
|
||||
for m = 1 to len(dtemp[n])/3-1
|
||||
if dtemp[n][m*3-1] != dtemp[n][m*3+1]
|
||||
flag = 0
|
||||
ok
|
||||
next
|
||||
if flag = 1
|
||||
lennew = len(dtemp[n])
|
||||
if lennew <= lenold
|
||||
lenold = lennew
|
||||
sumnew = 0
|
||||
for m = 1 to len(dtemp[n])/3
|
||||
sumnew = sumnew + dtemp[n][m*3]
|
||||
next
|
||||
if sumnew < sumold
|
||||
sumold = sumnew
|
||||
gend = dtemp[n]
|
||||
ok
|
||||
ok
|
||||
ok
|
||||
ok
|
||||
next
|
||||
str = ""
|
||||
see dbegin + " " + dend + " : "
|
||||
for m = 1 to len(gend)/3
|
||||
str = str + gend[(m-1)*3 + 1] + " " + gend[(m-1)*3 + 2] + " " + gend[(m-1)*3 + 3] + " -> "
|
||||
next
|
||||
str = left(str,len(str)-4)
|
||||
str = str + " cost : " + sumold + nl
|
||||
see str + nl
|
||||
|
||||
func powerset(list)
|
||||
s = "{"
|
||||
p = 0
|
||||
for i = 2 to (2 << len(list)) - 1 step 2
|
||||
s = ""
|
||||
for j = 1 to len(list)
|
||||
if i & (1 << j)
|
||||
s = s + list[j][1] + " " + list[j][2] + " " + list[j][3] + " "
|
||||
ok
|
||||
next
|
||||
if right(s,1) = " "
|
||||
s = left(s,len(s)-1)
|
||||
ok
|
||||
p = p + 1
|
||||
dgraph[p] = s
|
||||
next
|
||||
Loading…
Add table
Add a link
Reference in a new issue