В социальной сети у каждого пользователя не более десяти друзей (отношение «дружба» симметрично). Сеть связна: если, узнав интересную новость, пользователь начинает рассылать её своим друзьям, те своим и так далее, то в итоге новость узнают все пользователи. Докажите, что администрация сети может разбить пользователей на группы так, чтобы выполнялись следующие условия:
1) каждый состоит ровно в одной группе;
2) каждая группа связна в указанном выше смысле;
3) одна из групп содержит от 1 до 100 членов, а каждая из остальных от 100 до 900 членов.
Социальная сеть представляет собой граф, в котором люди — это вершины, а отношение «дружба» — ребра. Достаточно рассмотреть случай, когда этот граф является деревом. В требованиях условия задачи группу, в которой состоит от 1 до 100 членов, будем называть малой, а группу, где от 100 до 900 членов, — большой. Докажем утверждение задачи индукцией по числу пользователей сети. База индукции: Если в сети не более 100 пользователей, объявим их всех малой группой. Если в сети от 101 до 900 пользователей, назначим малой группой любого пользователя, соответствующего висячей вершине, а всех остальных запишем в большую группу.
Индукционный переход. Достаточно проверить, что если число пользователей больше 900, то можно подобрать большую группу, при удалении которой граф останется связным. Подвесим наше дерево и рассмотрим наиболее далекую от корня вершину A (одну из вершин), у которой больше 900 потомков. У каждого из сыновей вершины A не более 900 потомков, при этом количество сыновей — не более 9. Если у каждого из сыновей A не более 99 потомков, то в сумме у A не более потомков, что противоречит выбору вершины Значит, один из сыновей A имеет от 100 до 900 потомков, назначим его и его потомков большой группой.