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