#2 Графы на JS. Матрица и список смежности.

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024

Комментарии • 16

  • @user-il3vn7ye4n
    @user-il3vn7ye4n 3 года назад +4

    Читал "Грокаем алгоритмы" и пришел на твое видео)) Топ контент)))

  • @ivantsymbalenko4391
    @ivantsymbalenko4391 4 года назад +1

    Прекрасно объяснено. Хотелось бы услышать практическое применение, какие задачи решает и в каких случаях можно применить. Жду следующих видео)

    • @aboutit6516
      @aboutit6516  4 года назад

      Спасибо за фидбэк) постараюсь раскрыть в следующих видео)

  • @user-ki7tk2lt5p
    @user-ki7tk2lt5p 3 года назад

    Огромное спасибо за контент. Наконец-то понял, для чего нужны графы и что это вообще такое.

  • @Geovald
    @Geovald Год назад

    Спасибо!

  • @TheMetanka
    @TheMetanka 3 года назад +1

    Не останавливайся)

  • @gmmips
    @gmmips Год назад +1

    Френдлист нужно было делать массивом, а не объектом и id делать уникальным. Тогда бы было проще его перебирать и искать и фильтровать. Или вообще классом и через геттер вытаскивать нужные связи.

  • @kamranloki3792
    @kamranloki3792 2 года назад

    шедевральное объяснение

  • @silkcode3178
    @silkcode3178 11 месяцев назад

    четко и ясно

  • @Oshako1
    @Oshako1 4 года назад

    Вау, интересно :)

  • @maksimsergeevich5939
    @maksimsergeevich5939 3 года назад

    Подскажи, а можно таким образом делать графы, или это некорректно ? Ниже:
    const cell_1 = {
    nearby: [ ]
    }
    const cell_2 = {
    nearby: [ ]
    }
    cell_1.nearby.push(cell_2);
    cell_2.nearby.push(cell_1);
    console.log(cell_1.nearby); // вернет Array с одним элементом.
    ... и так далее добавляем сколько угодно объектов ( в моем примере соседние клетки).
    То-есть запушиваем в массив саму ссылку на существующий объект.

    • @aboutit6516
      @aboutit6516  3 года назад +1

      Привет:) Да, так тоже можно, как я сказал важно что бы у вершин хранилась инфа о соседях, концепцию ты понял. Но с таким представлениям будет неудобно работать. Если граф статический то подойдет, но представь что у тебя вершины графа задаются динамически, скажем в цикле в зависимости от каких то входящих данных и ты не знаешь точное количество вершин которое в итоге получиться.
      В случае хранения в обьекте ты сможешь задавать их так:
      const graph = {};
      for(let i = 0; i < n; ...) {
      const vertexId = `${someTemolateForId}`;
      graph[vertexId].nearby.push(nearbyVertextId)
      }
      В случае хранения в отдельных переменных тебе придется все переменные вершин задать выше функции генерации графа, но ты не сможешь этого сделать так как не знаешь точного количества вершин.
      const vertex1 = {};
      ...
      И еще будут траблы с областью видимости переменных вершин. Поэтому удобнее будет, если вершины будут лежать в одном месте(массив либо объект) для дальнейшей работы с графом.
      А по поводу того пушить ли саму ссылку вместо айдишки, то лучше все же так не делать, так как ты можешь модифицировать вершину из нескольких мест - потенциальное место для багов. Хотя можно и так, это уже как пожелаешь) Спасибо за вопрос)

    • @maksimsergeevich5939
      @maksimsergeevich5939 3 года назад

      @@aboutit6516 Спасибо тебе )