Алгоритм поиска кратчайшей связи между друзьями в социальной сети или между двумя вики-статьями
У меня есть модели в Django типа
from django.db import models
class TypeOfObject(models.Model):
type = models.CharField(max_length=150, unique=True)
def __str__(self):
return self.type
class Object(models.Model):
title = models.CharField(max_length=150)
content = models.TextField(blank=True)
is_published = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
type = models.ManyToManyField(TypeOfObject, related_name='type_of_object', blank=False)
relation = models.ManyToManyField('self', related_name='relation', blank=True, null=True)
def __str__(self):
return self.title
Объектом может быть человек, статья, фильм и т.д. Они относятся друг к другу. Как проверить, например, насколько связаны фильмы Человек-паук и Майкл Джексон. Мы можем найти артистов, которые снимались в фильмах, например, Стоуни Джексон и он снимался в фильме с актером, который снимался в фильме Человек-паук. Посчитаем это за 1. И так далее, мы можем оценить, как один объект связан с другим. Как лучше поступить?