teachpyx.practice.rues_paris

teachpyx.practice.rues_paris.bellman(edges: List[Tuple[int, int, int, Tuple[float, float], Tuple[float, float], float]], max_iter: int = 20, allow: Callable | None = None, init: Dict[Tuple[int, int], float] | None = None, verbose: bool = False) Dict[Tuple[int, int], float][source][source]

Implémente l’algorithme de Bellman-Ford.

Paramètres:
  • edges – liste de tuples (noeud 1, noeud 2, ?, ?, ?, poids)

  • max_iter – nombre d’itérations maximal

  • allow – fonction déterminant si l’algorithme doit envisager cette liaison ou pas

  • init – initialisation (pour pouvoir continuer après une première exécution)

  • verbose – afficher le progrès

Renvoie:

listes des arcs et des distances calculées

teachpyx.practice.rues_paris.connected_components(edges: List[Tuple[int, int, int, Tuple[float, float], Tuple[float, float], float]]) Dict[int, int][source][source]

Computes the connected components.

Paramètres:

edges – edges

Renvoie:

dictionary { vertex : id of connected components }

teachpyx.practice.rues_paris.distance_haversine(lat1: float, lng1: float, lat2: float, lng2: float) float[source][source]

Calcule la distance de Haversine Haversine formula

teachpyx.practice.rues_paris.distance_paris(lat1: float, lng1: float, lat2: float, lng2: float) float[source][source]

Distance euclidienne approchant la distance de Haversine (uniquement pour Paris).

teachpyx.practice.rues_paris.euler_path(edges: List[Tuple[int, int, int, Tuple[float, float], Tuple[float, float], float]], added_edges)[source][source]

Computes an eulerian path. We assume every vertex has an even degree.

Paramètres:
  • edges – initial edges

  • added_edges – added edges

Renvoie:

path, list of (vertex, edge)

teachpyx.practice.rues_paris.eulerien_extension(edges: ~typing.List[~typing.Tuple[int, int, int, ~typing.Tuple[float, float], ~typing.Tuple[float, float], float]], max_iter: int = 20, alpha: float = 0.5, distance: ~typing.Callable = <function distance_haversine>, verbose: bool = False) List[Tuple[int, int]][source][source]

Construit une extension eulérienne d’un graphe.

Paramètres:
  • edges – liste des arcs

  • max_iter – nombre d’itérations pour la fonction @see fn bellman

  • alpha – coefficient multiplicatif de max_segment

  • distance – la distance de Haversine est beaucoup trop longue sur de grands graphes, on peut la changer

  • verbose – afficher l’avancement

Renvoie:

added edges

teachpyx.practice.rues_paris.get_data(url: str = 'https://github.com/sdpython/teachpyx/raw/main/_data/paris_54000.zip', dest: str = '.', timeout: int = 10, verbose: bool = False, keep: int = -1) List[Tuple[int, int, int, Tuple[float, float], Tuple[float, float], float]][source][source]

Retourne les données des rues de Paris. On suppose que les arcs sont uniques et qu’il si \(j \rightarrow k\) est présent, \(j \rightarrow k\) ne l’est pas. Ceci est vérifié par un test.

Paramètres:
  • url – location of the data

  • dest – répertoire dans lequel télécharger les données

  • timeout – timeout (seconds) when estabishing the connection

  • verbose – affiche le progrès

  • keep – garde tout si la valeur est -1, sinon garde les 1000 premières rues, ces rues sont choisies de façon à construire un ensemble connexe

Renvoie:

liste d’arcs

Un arc est défini par un 6-uple contenant les informations suivantes :

  • v1: indice du premier noeud

  • v2: indice du second noeud

  • ways: sens unique ou deux sens

  • p1: coordonnées du noeud 1

  • p2: coordonnées du noeud 2

  • d: distance

teachpyx.practice.rues_paris.graph_degree(edges: List[Tuple[int, int, int, Tuple[float, float], Tuple[float, float], float]]) Dict[Tuple[int, int], int][source][source]

Calcul le degré de chaque noeud.

Paramètres:

edges – list des arcs

Renvoie:

degrés

teachpyx.practice.rues_paris.kruskal(edges: List[Tuple[int, int, int, Tuple[float, float], Tuple[float, float], float]], extension: Dict[Tuple[int, int], float]) List[Tuple[int, int]][source][source]

Applique l’algorithme de Kruskal (ou ressemblant) pour choisir les arcs à ajouter.

Paramètres:
  • edges – listes des arcs

  • extension – résultat de l’algorithme de Bellman

Renvoie:

added_edges

teachpyx.practice.rues_paris.possible_edges(edges: ~typing.List[~typing.Tuple[int, int, int, ~typing.Tuple[float, float], ~typing.Tuple[float, float], float]], threshold: float, distance: ~typing.Callable = <function distance_haversine>)[source][source]

Construit la liste de tous les arcs possibles en filtrant sur la distance à vol d’oiseau.

Paramètres:
  • edges – list des arcs

  • threshold – seuil au-delà duquel deux noeuds ne seront pas connectés

  • distance – la distance de Haversine est beaucoup trop longue sur de grands graphes, on peut la changer

Renvoie:

arcs possibles (symétrique –> incluant edges)