Konnektivität von US Counties
Konstruieren Sie den Konnektivitätsgraphen zwischen benachbarten US-Counties.
Ermitteln Sie die Liste aller Counties der zusammenhängenden US-Bundesstaaten.

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

Fügen Sie den District of Columbia hinzu, der zu keinem der 48 zusammenhängenden kontinentalen Bundesstaaten gehört.

AppendTo[counties,
Entity["AdministrativeDivision", {"DistrictOfColumbia",
"DistrictOfColumbia", "UnitedStates"}]];
Berechnen Sie für jedes County eine Liste der benachbarten Counties.

bordering = EntityValue[counties, "BorderingCounties"];
Entfernen Sie jene Fälle, in denen keine Information zu angrenzenden Counties verfügbar ist.

Length[missingpos = Position[bordering, _Missing]]


counties = Delete[counties, missingpos];
bordering = Delete[bordering, missingpos];
Konstruieren Sie die Ränder des Konnektivitätsgraphen der US-Counties.

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


Graph[counties, edges]

Um eine etwas vertrautere Darstellung zu erzielen, downloaden Sie das geographische Zentrum jedes Counties.

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

Verwenden Sie die folgende kartographische Projektion.

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

projpos = First@GeoGridPosition[pos, proj];
Dann sieht der Graph folgendermaßen aus.

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

Zwischen dem County San Francisco und Manhattan liegen mindestens 67 Counties, das Start- und Endcounty mit eingeschlossen.

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


HighlightGraph[graph, PathGraph[path]]
