Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.62 KB | None | 0 0
  1. from sys import stdin, stderr
  2.  
  3. def beste_sti(nm, sans, lengde):
  4.     #initialisering
  5.     d = [0.0]*lengde;
  6.     pi = [-1]*lengde;
  7.     pi[0] = 0;
  8.     Q = [1]*lengde;
  9.     for i in range(0, lengde):
  10.         d[i] = 0;
  11.     d[0] = sans[0];
  12.  
  13.     while 1:
  14.         # sjekker om det er flere som ikke er tatt med
  15.         a = 0;
  16.         for i in Q:
  17.             if i == 1:
  18.                 a = 1;
  19.         if a == 0:
  20.             break;
  21.  
  22.         # henter ut den med hoyest d-sannsynlighet
  23.         bestEst = -1;
  24.         bestKey = -1;
  25.         for i in range(0, lengde):
  26.             if (d[i] > bestEst) and (Q[i] == 1):
  27.                 bestEst = d[i];
  28.                 bestKey = i;
  29.         Q[bestKey] = 0;
  30.  
  31.         # relaxer alle stier ut ifra denne
  32.         for i in range(0, lengde):
  33.             if (d[i] < d[bestKey]*sans[i]) and (nm[bestKey][i] == 1):
  34.                 d[i] = d[bestKey]*sans[i];
  35.                 pi[i] = bestKey;
  36.                
  37.     #returstring...
  38.     returnarray = [];
  39.     returnarray.append(`lengde-1`)
  40.     prevkey = pi[lengde-1];
  41.     while prevkey != 0:
  42.         if(prevkey == -1):
  43.             return 0;
  44.         returnarray.append(`prevkey`);
  45.         prevkey = pi[prevkey];
  46.     returnarray.append(`0`);
  47.     returnarray = returnarray[::-1]
  48.     return "-".join(returnarray);
  49.  
  50. n = int(stdin.readline())
  51. sansynligheter = [float(x) for x in stdin.readline().split()]
  52. nabomatrise = []
  53. for linje in stdin:
  54.     naborad = [0] * n
  55.     naboer = [int(nabo) for nabo in linje.split()]
  56.     for nabo in naboer:
  57.         naborad[nabo] = 1
  58.     nabomatrise.append(naborad)
  59. print beste_sti(nabomatrise, sansynligheter, n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement