Re: [PIPython] grafocittā
Paolo Conte
Paolo.Conte
Ven 22 Apr 2005 17:26:25 CEST
toniko scrive:
>salve a tutti,
Ciao,
>sto cercando di realizzare per la mia tesi una struttura dati Grafo
>che rappresenti una cittā.
Tempo fa ho realizzato una cosa molto simile in Java. Ogni tanto mi
riprometto di convertirla in python ma il tempo latita... ;)
>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 ti bastano i quattro archi la cosa piu' semplice mi sembra essere usare
un dizionario, del tipo:
class City:
self.vicini = {}
Dove vicini avra' un contenuto del tipo {'N':city1, 'S':city2, ...}
Dove cityN e' un oggetto di tipi City.
Alternativa poco elegante e' di usare una variabile per ogni arco:
class City:
self.nord = city1
self.sud = city2
...
>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 ?
Secondo me dovresti fare (circa) il contrario di quanto fatto:
creare una classe generale che identifichi un oggetto collocato nella
griglia, tipo:
class Luogo:
...con la/le variabile/i che identificano il "vicinato"...
...con i metodi che permettono di aggiungere e togliere "vicini"...
...con la variabile che identifica le classi innestate...
Poi crei le classi Citta, Quartiere, Edificio che estendono la classe
Luogo.
Per "innestare" un oggetto nell'altro non fai altro che inserire una lista
delle classi contenute, a seconda del "livello".
Citta' conterra' una lista di quartieri, Quartiere di edifici, etc...
Per passare tra i vari livelli bastera' un semplice metodo che ti ritorna
il contenuto o il contenitore della classe.
>grazie per eventuali suggerimenti
Spero di essere stato d'aiuto, la "cottura mentale" del venerdi' sera non
aiuta... ;)
Saluti, buon fine settimana, P
---
CONFIDENTIAL INFORMATION
The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer.
More information about the Python
mailing list