-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTask 8 Special Solution.py
More file actions
31 lines (21 loc) · 1.36 KB
/
Task 8 Special Solution.py
File metadata and controls
31 lines (21 loc) · 1.36 KB
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
def multiply(A,B):
A = A.split(', ') #Matrix wird in Liste gepackt also die reihen
B = B.split(', ')
A = [list(map(int, row.split())) for row in A] #jede Reihe in Liste wird elementweise zu int und in neue Liste gepackt
B = [list(map(int, row.split())) for row in B]
m, r = len(A), len(A[0]) #klassisch lenA = Zeile lenA[0] = Spalte
r, n = len(B), len(B[0])
C = [['0' for _ in range(n)] for _ in range(m)] #Ergebnismatrix mit mxr*rxn = mxn
for i in range(m):
for j in range(n):
min_val = float('inf') # um zu garantieren, dass erster gefunder Wert in minplus-Alg. auch entsprechend übernommen wird
for k in range(r):
min_val = min(min_val, A[i][k] + B[k][j]) #einfach nur mathemathematisches durchführen der Berechnung
C[i][j] = str(min_val) #gef. Wert wird direkt wieder als String abgespeichert
C_str = ', '.join([' '.join(row) for row in C])#Zeichenkette in gewünschte Form bringen [6, 8, 4] in '6 8 4' bspw für eine row
return C_str
def power(A, m):
result = A # Kopie von A, um A für die Potenzierung nicht zu verändern
for _ in range(m - 1): # Bei der 2. Potenz wird A einmal mit sich selbst multipliziert, daher das
result = multiply(result, A) # Minplus Alg. in der Ergebnismatrix wird so berücksichtigt
return result