# Задача 1. Исследуем связи в словаре Python
graph = {
"A": ["B", "C"],
"B": ["D"],
"C": ["D"],
"D": []
}
out_degree_b = len(graph["B"])
print("Исходящая степень B:", out_degree_b)
in_degree_c = sum(1 for neighbors in graph.values() if "C" in neighbors)
print("Входящая степень С:", in_degree_c)
# Задача 2. Полный расчет степеней вершины
social = {
"Аня": ["Борис", "Василий"],
"Борис": ["Василий"],
"Василий": ["Аня", "Борис"],
"Глеб": ["Аня", "Борис"]
}
target = "Аня"
in_deg = sum(1 for target_list in social.values() if target in target_list)
out_deg = len(social[target])
print(f"Исходящая степень (подписки): {out_deg}")
print(f"Входящая степень (подписчики): {in_deg}")
# Задача 3. Проверка существования маршрута
roads = {
"Пункт1": ["Пункт2", "Пункт3"],
"Пункт2": ["Пункт4"],
"Пункт3": ["Пункт4"],
"Пункт4": ["Пункт5"],
"Пункт5": []
}
route_path = ["Пункт1", "Пункт3", "Пункт4", "Пункт5"]
is_valid = True
for i in range(len(route_path) - 1):
current = route_path[i]
next_node = route_path[i+1]
if next_node not in roads.get(current, []):
print(f"Ошибка: нельзя перейти из {current} в {next_node}")
is_valid = False
break
if is_valid:
print("Маршрут полностью корректен!")
# Задача 4. Поиск самой «популярной» вершины
web_links = {
"Page1": ["Page2", "Page3", "Page4"],
"Page2": ["Page4"],
"Page3": ["Page4"],
"Page4": ["Page2"]
}
max_in_degree = -1
popular_vertex = None
for vertex in web_links.keys():
in_deg = sum(1 for links in web_links.values() if vertex in links)
if in_deg > max_in_degree:
max_in_degree = in_deg
popular_vertex = vertex
print(f"Самая популярная вершина: {popular_vertex} (входящая степень: {max_in_degree})")