[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