class Node:
def __init__(self,name):
self.name = name
self.input = []
self.output = []
self.weight = 0
self.flag = True
def addinput(self,inputitem):
self.input.append(inputitem)
def removeinput(self,removeitem):
for item in self.input:
if item == removeitem:
self.input.remove(item)
def addoutput(self,outputitem):
self.output.append(outputitem)
def removeoutput(self,removeitem):
for item in self.output:
if item == removeitem:
self.output.remove(item)
def PageRank(NodeList):
for Node in NodeList:
if len(Node.input) == 0:
Node.weight = 1
for index in range(len(NodeList)):
for Node in NodeList:
if len(Node.input) == 0 and Node.flag:
if len(Node.output) > 0:
addweight = Node.weight / len(Node.output)
for addNode in Node.output:
for findNode in NodeList:
if addNode == findNode.name:
findNode.weight += addweight
findNode.removeinput(Node.name)
Node.removeoutput(findNode)
Node.flag = False
printNodeList(NodeList)
def printNodeList(NodeList):
for Node in NodeList:
print('{}==={}'.format(Node.name,Node.weight))
if __name__ == '__main__':
one = Node('one')
one.addinput('seven')
one.addinput('three')
# one.addoutput('')
two = Node('two')
two.addinput('six')
two.addinput('nine')
two.addoutput('three')
three = Node('three')
three.addinput('two')
three.addinput('four')
three.addoutput('one')
four = Node('four')
four.addinput('five')
four.addoutput('three')
five = Node('five')
five.addinput('nine')
five.addinput('ten')
five.addoutput('four')
six = Node('six')
six.addinput('seven')
six.addoutput('two')
seven = Node('seven')
seven.addinput('eight')
seven.addoutput('six')
seven.addoutput('one')
eight = Node('eight')
# eight.addinput('')
eight.addoutput('seven')
nine = Node('nine')
# nine.addinput('')
nine.addoutput('two')
nine.addoutput('five')
ten = Node('ten')
# ten.addinput('')
ten.addoutput('five')
NodeList = []
NodeList.append(one)
NodeList.append(two)
NodeList.append(three)
NodeList.append(four)
NodeList.append(five)
NodeList.append(six)
NodeList.append(seven)
NodeList.append(eight)
NodeList.append(ten)
NodeList.append(nine)
PageRank(NodeList)
有向图实现(类似PageRank)
最新推荐文章于 2024-04-26 11:14:26 发布