Алгоритм поиска кратчайшей связи между друзьями в социальной сети или между двумя вики-статьями

У меня есть модели в 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. И так далее, мы можем оценить, как один объект связан с другим. Как лучше поступить?

Вернуться на верх