.. py:module:: mapes Mapa polític ============ Utilitzarem un :py:class:`~networkx.Graph` per a representar el mapa polític d'un territori, és a dir, la divisió del territori en diferents zones (països, comarques, diòcesis...), identificades pel seu nom. Cada node del graf correspondrà a una zona del graf, i dues zones estaran unides per una aresta sempre que siguin limítrofs, és a dir, quan comparteixin una frontera terrestre. Vegeu-ne un exemple: .. figure:: mapa.svg :align: center Mapa d'un territori fictici dividit en zones i graf corresponent. Es demana que en el mòdul :mod:`mapes` (fitxer :file:`mapes.py`), hi implementeu les funcions següents: .. function:: fusiona_zones(gm, z1, z2, z3) Donat un graf d'un territori `gm` i el nom de tres zones `z1` i `z2`, modifica el graf de manera que representi el mateix territori on la zona `z1` i `z2` s'han unificat en una de sola, de nom `z3`. Per exemple, amb el territori de la figura, s'han fusionat les zones :py:const:`'Ashari'` i :py:const:`'Samari'` en la nova regió de nom :py:const:`'Ashamari'`. .. figure:: fusio.svg :align: center Disposeu de jocs de proves més complets al fitxer :download:`test-fusiona.txt`. .. function:: zones_de_pas(gm, za, zb) Donat un graf d'un territori `gm` i el nom de dues zones `za` i `zb`, retorna el conjunt (un :py:class:`set` de Python) de noms de zones de `gm` tals que s'hagi de passar ineludiblement per anar per terra de la zona `za` fins a la `zb`. Si no hi ha cap manera d'anar per terra d'una a l'altra zona, la funció retornarà el conjunt :py:const:`{'IMPOSSIBLE'}`. Per exemple, amb el graf del territori de la primera figura, la funció ha de respondre així: .. literalinclude:: test-zones.txt :language: python :start-after: --inici-- :end-before: --fi-- Disposeu de jocs de proves al fitxer :download:`test-zones.txt` i d'una solució al fitxer :download:`mapes.py`.