假設我有以下代碼:如果排名系統的值爲正數k,我該如何刪除排名系統中的值?
def compute_ranks(graph, k):
d = .8 #dampening factor
loops = 10
ranks = {}
npages = len(graph)
for page in graph:
ranks[page] = 1.0/npages
for c in range(0, loops):
newranks = {}
for page in graph:
newrank = (1-d)/npages
for node in graph:
if page in graph[node]:
newrank = newrank + d * (ranks[node]/len(graph[node]))
newranks[page] = newrank
ranks = newranks
return ranks
好吧,那麼現在假設我想不允許,可以相互串通的任何項目。如果我有一個項目錄
g = {'a': ['a', 'b', 'c'], 'b':['a'], 'c':['d'], 'd':['a']}
對於任何路徑A ==> B,我不希望允許的B路徑==>一個是在距離等於或低於我的數k。
例如如果k = 0,則我不會允許的唯一路徑是A ==>一種。
然而如果k = 2,則我將不允許鏈接A ==> A作爲之前,但還鏈接如d ==> A,B ==> A,或者A ==>℃。
我知道這是非常混亂,大多數我的問題來自於不瞭解究竟這是什麼意思。
這裏的問題的轉錄產物:
# Question 2: Combatting Link Spam
# One of the problems with our page ranking system is pages can
# collude with each other to improve their page ranks. We consider
# A->B a reciprocal link if there is a link path from B to A of length
# equal to or below the collusion level, k. The length of a link path
# is the number of links which are taken to travel from one page to the
# other.
# If k = 0, then a link from A to A is a reciprocal link for node A,
# since no links needs to be taken to get from A to A.
# If k=1, B->A would count as a reciprocal link if there is a link
# A->B, which includes one link and so is of length 1. (it requires
# two parties, A and B, to collude to increase each others page rank).
# If k=2, B->A would count as a reciprocal link for node A if there is
# a path A->C->B, for some page C, (link path of length 2),
# or a direct link A-> B (link path of length 1).
# Modify the compute_ranks code to
# - take an extra input k, which is a non-negative integer, and
# - exclude reciprocal links of length up to and including k from
# helping the page rank.
@robert:如果你看了這個問題,OP說這是一個他無法解決的過去的作業問題。 – Blender
困惑,如果你不允許 「鏈接,如d ==> A,B ==> A,或A ==> C」,那麼你怎麼讓? – xvatar
好的,我想我理解引用的文字,但問題是它不包含問題。我假設任務是給頁面分配排名,給定的詞典顯示了它們如何鏈接到對方。我不明白的是,頁面排名的定義是什麼? –