Conectividad de condados de EE.UU.
Construya el grafo de conectividad entre condados vecinos de EE.UU.
Tome la lista de todos los condados en los estados contiguos de los EE.UU. continentales.
Length[counties =
Flatten[EntityClass["AdministrativeDivision",
"ContinentalUSStates"]["Subdivisions"]]]
Agregue el Distrito de Columbia, el cual no es una subdivisión de ninguno de los 48 estados contiguos.
AppendTo[counties,
Entity["AdministrativeDivision", {"DistrictOfColumbia",
"DistrictOfColumbia", "UnitedStates"}]];
Calcule la lista de condados límite de cada estado.
bordering = EntityValue[counties, "BorderingCounties"];
Elimine algunos casos para los cuales información de límite no está disponible.
Length[missingpos = Position[bordering, _Missing]]
counties = Delete[counties, missingpos];
bordering = Delete[bordering, missingpos];
Construya los bordes del grafo de conectividad de los condados de EE.UU.
Length[edges =
DeleteDuplicates[
Sort /@ Flatten[
MapThread[Thread[UndirectedEdge[##]] &, {counties, bordering}]]]]
Graph[counties, edges]
Para construir una incrustación más familiar, descarga la posición central de todos los condados.
pos = GeoPosition[EntityValue[counties, "Position"]]
Utilice la siguiente proyección cartográfica.
proj = {"LambertAzimuthal",
"Centering" ->
Entity["City", {"Topeka", "Kansas", "UnitedStates"}]};
projpos = First@GeoGridPosition[pos, proj];
Luego, usted tiene el siguiente incrustación de grafo.
graph = Graph[counties, edges, VertexCoordinates -> projpos]
Para ir del condado de San Francisco a Manhattan, usted necesita visitar al menos 67 condados, incluyendo los iniciales y finales.
Length[path = FindShortestPath[graph,
Entity[
"AdministrativeDivision", {"SanFranciscoCounty", "California",
"UnitedStates"}],
Entity[
"AdministrativeDivision", {"NewYorkCounty", "NewYork",
"UnitedStates"}]]]
HighlightGraph[graph, PathGraph[path]]