Skip to content

Commit fd76fd9

Browse files
committed
check runningTime
1 parent a3c8f99 commit fd76fd9

File tree

1 file changed

+41
-20
lines changed

1 file changed

+41
-20
lines changed

im.py

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import sys
2+
import time
23
from node import Node
34
from edge import Edge
45
from graph import Graph
@@ -10,15 +11,18 @@
1011

1112
G = Graph()
1213
seedCount = 0
14+
runningTimes = {}
1315

1416
def main():
1517

1618
global G
1719

1820
validatePath()
19-
generalGreedy()
20-
#degreeDiscountRough()
21-
printResults()
21+
printPropagationPath('w')
22+
generalGreedy('generalGreedy')
23+
printResults('a', 'generalGreedy')
24+
degreeDiscountRough('degreeDiscountRough')
25+
printResults('a', 'degreeDiscountRough')
2226

2327
def initialize(k,inputName,outputName):
2428
global G
@@ -42,17 +46,9 @@ def initialize(k,inputName,outputName):
4246
G.addEdge(e, elements[2], elements[3])
4347
inputFile.close()
4448

45-
def printResults():
46-
global G
49+
def printPropagationPath(mode):
4750
global outputFileName
48-
49-
G.draw()
50-
outputFile = open(outputFileName,'w')
51-
outputFile.write("Seed :\n")
52-
for s in G.getSeeds():
53-
outputFile.write(s.getId() + " " + s.getName() + "\n")
54-
55-
outputFile.write("========\n")
51+
outputFile = open(outputFileName, mode)
5652
outputFile.write("propagated :\n")
5753

5854
validNodeSet = G.getValidNodeSet()
@@ -63,48 +59,73 @@ def printResults():
6359
outputFile.write("\n")
6460

6561
outputFile.write("========\n")
62+
outputFile.close()
63+
64+
def printResults(mode, method):
65+
global G
66+
global outputFileName
67+
global runningTimes
68+
69+
G.draw()
70+
outputFile = open(outputFileName, mode)
71+
outputFile.write(method + " : " + str(runningTimes[method]) + "s\n")
72+
outputFile.write("Seed :\n")
73+
for s in G.getSeeds():
74+
outputFile.write(s.getId() + " " + s.getName() + "\n")
6675

76+
outputFile.write("========\n")
6777
outputFile.close()
6878

69-
def degreeDiscountRough():
79+
def degreeDiscountRough(method):
7080
global G
7181
global seedCount
82+
global runningTimes
7283

7384
G.clearSeed()
7485

86+
startTime = time.time()
7587
for v in G.getNodes():
7688
v.setSeedNeighborCount(0)
7789
v.setExtraInfluence(v.getValidOutDegree())
7890

91+
candidates = list(set(G.getNodes())-set(G.getSeeds()))
7992
for i in range(0,seedCount):
80-
candidates = list(set(G.getNodes())-set(G.getSeeds()))
8193
u = getMaximumNode(candidates)
8294
G.addSeed(u)
95+
candidates.remove(u)
8396
for e in u.getInEdges():
8497
neighbor = e.getSrc()
8598
neighbor.setSeedNeighborCount(neighbor.getSeedNeighborCount()+1)
86-
neighbor.setExtraInfluence(max(0,neighbor.getValidOutDegree()-neighbor.getSeedNeighborCount()))
99+
neighbor.setExtraInfluence(neighbor.getValidOutDegree()-neighbor.getSeedNeighborCount() if neighbor.getExtraInfluence() > 0 else -1)
87100
for e in u.getOutEdges():
88101
dest = e.getDest()
89-
dest.setExtraInfluence(0)
102+
dest.setExtraInfluence(-1)
90103

104+
runningTimes[method] = round(time.time() - startTime,2)
91105

92-
def generalGreedy():
106+
107+
def generalGreedy(method):
93108
global G
94109
global seedCount
110+
global runningTimes
95111

96112
G.clearSeed()
97113

114+
startTime = time.time()
115+
candidates = list(set(G.getNodes())-set(G.getSeeds()))
98116
for i in range(0,seedCount):
99-
candidates = list(set(G.getNodes())-set(G.getSeeds()))
100117
for v in candidates:
101118
v.setExtraInfluence(0)
102119
results = []
103120
for s in G.getSeeds():
104121
cascade(s, results)
105122
cascade(v, results)
106123
v.setExtraInfluence(len(results))
107-
G.addSeed(getMaximumNode(candidates))
124+
selected = getMaximumNode(candidates)
125+
G.addSeed(selected)
126+
candidates.remove(selected)
127+
128+
runningTimes[method] = round(time.time() - startTime,2)
108129

109130
def cascade(seed, results): ##DFS
110131
if seed not in results:

0 commit comments

Comments
 (0)