Connectivité des comtés américains
Construisez le graphe de connectivité entre les comtés américains voisins.
Prenez la liste de tous les comtés dans les États continentaux contigus.

Length[counties =
Flatten[EntityClass["AdministrativeDivision",
"ContinentalUSStates"]["Subdivisions"]]]

Ajoutez le district de Columbia qui n'est pas une subdivision de l'un des 48 états contigus.

AppendTo[counties,
Entity["AdministrativeDivision", {"DistrictOfColumbia",
"DistrictOfColumbia", "UnitedStates"}]];
Calculez la liste des comtés limitrophes de chaque comté.

bordering = EntityValue[counties, "BorderingCounties"];
Rejetez certains cas pour lesquels des informations limitrophes ne sont pas disponibles.

Length[missingpos = Position[bordering, _Missing]]


counties = Delete[counties, missingpos];
bordering = Delete[bordering, missingpos];
Construisez les arêtes du graphe de connectivité des comtés américains

Length[edges =
DeleteDuplicates[
Sort /@ Flatten[
MapThread[Thread[UndirectedEdge[##]] &, {counties, bordering}]]]]


Graph[counties, edges]

Pour construire une représentation plus familière, téléchargez la position centrale de tous les comtés.

pos = GeoPosition[EntityValue[counties, "Position"]]

Utilisez la projection cartographique suivante.

proj = {"LambertAzimuthal",
"Centering" ->
Entity["City", {"Topeka", "Kansas", "UnitedStates"}]};

projpos = First@GeoGridPosition[pos, proj];
On obtient alors l'intégration de graphe suivante.

graph = Graph[counties, edges, VertexCoordinates -> projpos]

Pour aller du comté de San Francisco à Manhattan, il faut visiter au moins 67 comtés, y compris le premier et le dernier.

Length[path = FindShortestPath[graph,
Entity[
"AdministrativeDivision", {"SanFranciscoCounty", "California",
"UnitedStates"}],
Entity[
"AdministrativeDivision", {"NewYorkCounty", "NewYork",
"UnitedStates"}]]]


HighlightGraph[graph, PathGraph[path]]
