Conectividade dos municípios dos EUA
Construa o gráfico de conectividade entre municípios vizinhos dos Estados Unidos.
Pegue a lista de todos os municípios dos estados contíguos dos Estados Unidos.

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

Adicione o Distrito de Columbia, que não é uma subdivisão de nenhum dos 48 estados contíguos.

AppendTo[counties,
Entity["AdministrativeDivision", {"DistrictOfColumbia",
"DistrictOfColumbia", "UnitedStates"}]];
Calcule a lista de municípios que fazem fronteira com cada município.

bordering = EntityValue[counties, "BorderingCounties"];
Descarte alguns casos para os quais a informação de limite não está disponível.

Length[missingpos = Position[bordering, _Missing]]


counties = Delete[counties, missingpos];
bordering = Delete[bordering, missingpos];
Construa as bordas do gráfico de conectividade dos municípios dos Estados Unidos.

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


Graph[counties, edges]

Para construir uma incorporação mais familiar, faça download da posição central de todos os municípios.

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

Use a seguinte projeção cartográfica.

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

projpos = First@GeoGridPosition[pos, proj];
Assim você tem a seguinte incorporação de gráfico.

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

Para ir de San Francisco para Manhattan, você precisa visitar pelo menos 67 municípios, incluindo o inicial e o final.

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


HighlightGraph[graph, PathGraph[path]]
