-
Notifications
You must be signed in to change notification settings - Fork 0
/
øving11.jl
66 lines (56 loc) · 1.4 KB
/
øving11.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
adjacency_matrix = [0 7 2; Inf 0 Inf; Inf 4 0]
function floyd_warshall(adjacency_matrix, nodes, f, g)
d = adjacency_matrix
for k = 1:nodes
for i = 1:nodes
for j = 1:nodes
d[i,j]=f(d[i,j],g(d[i,k],d[k,j]))
end
end
end
return d
end
#floyd_warshall(adjacency_matrix,3,min,+)
function and(num,num2)
if num == 1 && num2 == 1
return 1
else return 0
end
end
function or(num,num2)
if num == 1 || num2 == 1
return 1
else return 0
end
end
function transitive_closure(adjacency_matrix, nodes)
t = adjacency_matrix
for i = 1:nodes
for j = 1:nodes
if i == j || t[i,j] != Inf
t[i,j] = 1
else
t[i,j] = 0
end
end
end
return floyd_warshall(t, nodes,or,and)
end
function value(letter)
return letter - 'A' + 1
end
function create_preference_matrix(ballots, voters, candidates)
matrix = zeros(candidates,candidates)
l = candidates
for k = 1:voters
for i = 1:len
row = value(ballots[k][i])
for j = i+1:len
collumn = value(ballots[k][j])
matrix[row,collumn] += 1
end
end
end
return matrix
end
println(create_preference_matrix(["ABC", "BCA", "ABC"], 4, 3))