1. Grafs: Més linies de metro (3.5 punts)

En aquest problema treballarem amb un graf que representa la xarxa de metro d’una ciutat , que ja coneixeu. Per crear aquest graf podeu utilitzar la funció crea_xarxa_metro() del mòdul crea_metro_bcn (fitxer crea_metro_bcn.py) que utilitza les dades del fitxer metrobcn.txt. Cal que us descarregueu tots dos fitxers, però no els heu de pujar a la tasca. Només pugeu el fitxer mes_metro.py amb les funcions descrites a continuació.

1.1. Funció quines_linies

Al mòdul mes_metro (fitxer mes_metro.py), implementeu-hi la funció següent:

mes_metro.quines_linies(g, p1, p2)
Paràmetres:
  • g – graf de NetworkX que representa una xarxa de línies metro

  • p1 – nom d’una parada de metro

  • p2 – nom d’una segona parada de metro (diferent de p1)

Retorna:

Llista ordenada amb els noms de totes les línies de metro a les qual pertanyen ambdues parades p1 i p2. En cas que les parades no pertanyin a una mateixa línia, retorna la llista buida.

Per exemple, si g és el graf de les línies de metro de Barcelona, el de l’exemple de l’enunciat original del problema, aquesta funció ha de respondre així:


>>> from mes_metro import quines_linies
>>> quines_linies(g, 'Lesseps', 'Drassanes')
['L3']
>>> quines_linies(g, 'Girona', 'Hostafrancs')
[]
>>> quines_linies(g, 'Diagonal', 'Sants Estacio')
['L3', 'L5']

Disposeu de més jocs de proves al fitxer test-quineslinies.txt, el qual utilitza els fitxers crea_metro_bcn.py i metrobcn.txt esmentats al principi de l’enunciat (cal que us els descarregueu).

1.2. Funció transbordaments

Al mateix mòdul mes_metro (fitxer mes_metro.py), implementeu-hi la funció següent:

mes_metro.transbordaments(g, lin)
Paràmetres:
  • g – graf de NetworkX que representa una xarxa de línies metro

  • lin – nom d’una de les línies de metro

Retorna:

Llista ordenada de línies de metro que connecten amb la línia donada lin, és a dir, llista de línies de metro a les quals pot fer transbordament un passatger que és a la línia lin.

Per exemple, si g és el graf de les línies de metro de Barcelona, el de l’exemple de l’enunciat original del problema, aquesta funció ha de respondre així:


>>> from mes_metro import transbordaments
>>> transbordaments(g, 'L1')
['L2', 'L3', 'L4', 'L5', 'L9']
>>> transbordaments(g, 'L3')
['FM', 'L1', 'L11', 'L2', 'L4', 'L5']
>>> transbordaments(g, 'L10')
['L2', 'L9']

Disposeu de més jocs de proves al fitxer test-transbordaments.txt, el qual utilitza els fitxers crea_metro_bcn.py i metrobcn.txt esmentats al principi de l’enunciat (cal que us els descarregueu). metrobcn.txt (cal que us el descarregueu).