HPO機密日誌

自己をならふといふは、自己をわするるなり。

できたぁ!

"""
テーマ:ネットワークモデルを表現するクラス。
作成:平成17年6月19日 ver. 0.1
object.nord : 一つ目(0)から順にn番目まで、ノードの存在を表す。値は、そのノードの持つ値。値を入れないと、0を生成する。
object.link : 2つのノード番号からなるリストのリスト。中に入る[n,m]は、ノードnとノードmとの間にリンクが存在することを示す。
.add_nord():ノードを加える。numberはノードにふりたい固有番号でも、ノードのなんらかの値でもOK。
.add_link(n1,n2):ノードn1、n2間のリンクをはる。重複チェックをしている。
.search_link(n):ノードnに関するリンクを出力する。
.remove_nord(n):ノードnに関するリンクを削除した上で、n自体も削除する。
*この他、python固有リスト関連の操作はそのまま、.nord、.linkに対して使える。
"""

class network_data:
def __init__(self):
self.nord=
self.link=

def add_nord(self,value=0,number=1):
for i in range(0,number):
self.nord.append(value)
def add_link(self,first,second):
if first>second:
first,second=second,first
nord_num=len(self.nord)
if first<=nord_num and second<=nord_num and first<>second :
a_flag=self.link.count([first,second])
if a_flag==0:
self.link.append([first,second])
self.link.sort()
def search_link(self,n):
link_result=
for i in range(0,len(self.link)):
temp_link=self.link[i]
a,b=0,0
if temp_link[0]==n or temp_link[1]==n:
link_result.append(temp_link)
return link_result
def remove_nord(self,n):
remove_list=self.search_link(n)
for remove_link in remove_list:
self.link.remove(remove_link)
list_append=

list_remove=[]
for target_link in self.link:
a,b=0,0
if target_link[0]>=n:
a=target_link[0]-1
b=target_link[1]
if target_link[1]>=n:
b=target_link[1]-1
if a>0 or b>0:
list_remove.append(target_link)
list_append.append([a,b])
for target_link in list_remove:
self.link.remove(target_link)
self.link.extend(list_append)
self.link.sort()
return self.nord.pop(n)