[PIPython] grafo cittą
toniko
toniko
Ven 22 Apr 2005 15:56:08 CEST
salve a tutti,
sto cercando di realizzare per la mia tesi una struttura dati Grafo che
rappresenti una cittą.
l'idea č di realizzarlo con nodi con liste di adiacenza, per ogni nodo
dovrei avere 4 archi (nord,sud,est,ovest) che legano quel nodo ad altri
(anche vuoti). se conosco le coordinate di un nodo ( ad esempio x=0,
y=0) , partendo da quel nodo, vorrei settare la posizione dei nodi
confinanti.
ad es: nodo 'A' : {'nord' : 'B', 'sud' : 'C', 'ovest' : None, 'est' : None}
quindi dato A.posizione(x,y)=[0,0]
avrei B poichč sta a nord B.x=A.x e B.y=A.y + 10
avrei C poichč sta a sud C.x=A.x e C.y=A.y - 10
Sto cercando sulla rete esempi di grafi in python, ma sono molto confuso
quel poco che ho fatto č quanto segue:
coo='N','S','O','E'
class city:
"""
city explore : č fatto da quartieri (nodi)
e da una lista di quartieri adiacenti"""
def __init__(self,user=None):
self.user=user
self.nodes={}
self.edges={}
#def addQuart(self,q,lc):
#self.quart[q]=lc
def add_node(self, v ):
"""add a node with key v to the graph.
If the node already exists, the node will not be created.
@param v: the key to access the node."""
if not self.nodes.has_key(v):
self.nodes[v] = ([],[])
def add_ed(self, v ):
"""add a node with key v to the graph.
If the node already exists, the node will not be created.
@param v: the key to access the node."""
ed =self.edificio()
if not ed.exist():
ed.altezza=2
return ed
#if not self.edificio.exist(v):
#self.edificio.altezza=1
def addNode(self, edID , data=None):
if not self.nodes.has_key(edID):
self.nodes[edID]=(data)
else:
print "WARNING: Duplicate node id's. "
def addEdge(self,node,direction=None):
self.edges[node]=direction
def positioned(self,node):
self.nodes[node]=True
return self.nodes.values()
class edificio:
def __init__(self):
self.positon=[0,0]
self.altezza=1
self.confini=[]
def setPosition(self,x,y):
self.positon[0]=x
self.positon[1]=y
def exist(self):
return True
if __name__=='__main__':
c=city()
print dir(c)
print c,c.edificio
ed = c.edificio()
print ed
print c.add_ed(ed)
c.addNode(1,[0,0])
c.addNode(2)
c.addEdge(1,{'n':2,'s':3})
print 'nodi',c.nodes
print 'archi',c.edges
f=c.positioned(1)
print f
sono molto confuso; una domanda sulle classi innestate:
se una cittą contiene dei quartieri e un quartiere contiene una piazza
con degli edifici intorno
e volessi realizzare le classi Cittą , Quartiere , Edificio dovrei
innestarle Edificio in Quartiere e Quartiere in Cittą o dovrei farle
ereditare tipo
class citta:
class quartiere(citta):
class edificio (quartiere)
o al contrario? boh
come fareste voi ?
grazie per eventuali suggerimenti
toniko
PS: tra il dire e il fare c'č di mezzo " e il " (Groucho)
--
Email.it, the professional e-mail, gratis per te: http://www.email.it/f
Sponsor:
Acquista ora Email.it Phone Card e comincia a risparmiare sulle tue telefonate! Clicca e scopri l'offerta
Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=2684&d=22-4
More information about the Python
mailing list