Dynamic Programming Knapsack (как использовать, понимать, применять, dp трюки и оптимизации)

Поділитися
Вставка
  • Опубліковано 25 гру 2024

КОМЕНТАРІ • 23

  • @42px
    @42px Місяць тому

    Балдежный ролик, про cache line интересно

  • @ДмитрийС-м5м
    @ДмитрийС-м5м 5 місяців тому +11

    Я вообще не пишу никому комментарии, но на твоем канале делаю это второй раз.
    Просто браво, супер полезный контент, из каждого видео можно извлекать и извлекать что то новое. Огромный респект за всю твою работу.

    • @alexPCking
      @alexPCking 5 місяців тому +8

      @@serhii_devпотому что долго, никто не хочет разбираться ни в чем. все хотят через ролики по 5 -10 минут стать экспертами)

    • @koduryem
      @koduryem  5 місяців тому +1

      спасибо большое)

  • @klyuk88
    @klyuk88 3 місяці тому

    Огромный респект за контент! 🤝

  • @baltichka_chan
    @baltichka_chan 5 місяців тому

    Огромное спасибо, очень полезное видео 💜

  • @CadCabade
    @CadCabade 3 місяці тому +4

    Хорошему видео таймкоды не помешают
    00:00 Введение
    5:56 Объяснение Knapsack
    14:17 Рекурсия: Идея
    29:42 Рекурсия: Leap of Faith
    38:55 Best Time to Buy and Sell Stock (рекурсивный подход Top-Down)
    1:05:25 Итеративный подход Bottom-Up
    1:16:23 Оптимизация 1 по памяти (Space Optimization)
    1:25:14 Оптимизация 2
    1:29:42 Оптимизация 3
    1:32:50 Дальнейшие оптимизации
    1:38:28 Выводы по Задаче 1
    1:46:30 Best Time to Buy and Sell Stock 2
    1:55:12 Best Time to Buy and Sell Stock 3
    2:04:35 Best Time to Buy and Sell Stock 4
    2:07:00 Best Time to Buy and Sell Stock With Cooldown
    2:10:20 Maximum Subarray
    2:22:02 Maximum Subarray - Решение 2
    2:26:23 Maximum Subarray - Решение 3
    2:30:30 Maximum Subarray - Решение 4
    2:37:38 Предложение о коллективности

    • @chu_ri5470
      @chu_ri5470 2 місяці тому

      2:10:20
      К слову, самое красивое решение это именной Kadane's Algorithm. Потребуется константа по памяти.
      При желании его можно вывести из последнего решения в видео. Такой приём часто работает.

  • @heybeachMIN
    @heybeachMIN 2 місяці тому

    Блин, решение(1 задачи) с рекурсией оч сложно понять, было бы круто, если бы ты в кратце как-нить дерево стэка вызовов на каком-нибудь примере ещё рисовал, чтоб более наглядней было. Типа, я смотрел видео про рекурсию(наверно, ещё раз пересмотрю), но всё равно чёт сложно. С решениями где используются матрицы/массивы уже понятнее.

    • @koduryem
      @koduryem  2 місяці тому +2

      Дерево стека вызовов не масштабируемо для решения других задач. Поэтому смысла нет особо. Нужно сменить мышление на рекурсивное/декларативное

    • @heybeachMIN
      @heybeachMIN 2 місяці тому

      @@koduryem Да, я уже разобрался, я там затупил и не понял, что за taken)))

    • @heybeachMIN
      @heybeachMIN 2 місяці тому

      @@koduryem А, кст, вопрос хотел задать, планируешь ли ещё видео про алгоритмы снимать? Там, например, разбор каких-то ещё задач либо может быть про паттерны опять.

  • @ЕкатеринаКригер-ы9в
    @ЕкатеринаКригер-ы9в 2 місяці тому

    пока идёт объяснение слова - всё понимаю
    как доходит до кода - НОЛЬ
    просто ноль
    у меня вообще объяснение не укладывается в понимание кода ((((

    • @koduryem
      @koduryem  2 місяці тому +1

      Нужно наработать переход образ в голове -> код и наоборот. Больше писать код и всегда представлять, а не тупо писать буквы или переписывать. И отработать рекурсию хорошенько сначала. Так всегда сначала. Потом проще. Паника и стресс ток помешает учиться. Не переживай

  • @Дмитрий-э7ъ9ч
    @Дмитрий-э7ъ9ч 5 місяців тому +1

    Спасибо. Вы очень интересно рассказываете, но очень долго. Несколько раз повторяете одно и то же.

    • @AlexeyPolyakov-c2n
      @AlexeyPolyakov-c2n 5 місяців тому

      Я думаю что на подготовку текста и более качественный монтаж несоразмерно больше сил уйдёт
      А тут такой сложный материал и то очень качественно, так что очень хорошо что так есть :)
      А для себя можно после просмотра создать небольшой конспект и все :)

    • @CadCabade
      @CadCabade 4 місяці тому

      Повторение помогает пониманию и закреплению. Это хорошая практика наоборот.

  • @Teacification
    @Teacification 5 місяців тому

    20 минут видео, а к решению не приступали, как такое смотреть ? Пытаюсь осознать, что за эти 20 минут посмотрел, но ни чего вспомнить не могу, как так ?

    • @koduryem
      @koduryem  5 місяців тому +2

      Нужно тренировать короткую память, если она слабая. Запоминать и быть внимательнее. Пробуй останавливаться и проверять понял ли ты или просто просмотрел. В таких темах это работать не будет, это не "бери так делай". Делай что-то вроде рефлексии - понял, что просмотрел какие-то ключевые моменты - останови и вспомни, что там было, про что, почему и как. Потом дальше. Ты должен в такие паузы уметь ответить "да, идея вот такая была, надо пытаться так-то делать, стремиться к тому-то тому-то", возможно без прямо подробностей, все помнить не нужно.
      Тема сама по себе сложная, поэтому не расстраивайся. Попробуй просмотреть ролик по рекурсии и все, что с ней связано (у меня ранее был). Тут немножко нужно сменить мышление с итеративного.

    • @MrSanya789
      @MrSanya789 5 місяців тому +1

      Понимаешь это видео не про само решение, а про то как увидеть паттерн и научится его применять. Если просто про то как решать knapsack, сам алгоритм конкретной задачи, то таких видео очень много. В первых 20 минутах очень много про ментальную модель, внутренний взор и общий подход.

    • @koduryem
      @koduryem  5 місяців тому +2

      Попробуй посмотреть еще комменты под видео "Как решать алгоритмы на Leetcode Часть 2", там CadCabade задавал вопросы и мы поговорили немного.

    • @CadCabade
      @CadCabade 4 місяці тому +1

      А вот и упомянутый выше CadCabade :)
      Как человек с похожей проблемой, не могу посоветовать задумываться каждые несколько минут, что ты сейчас услышал, и пытаться сразу отрефлексировать. Предлагаю тебе попробовать еще такой подход, когда смотришь подобные видео.
      Пока смотришь, набрасываешь на листок самые общие фразы. Обычно, рассказчик, если он такой же хороший, как автор, отдельно их выделяет и подчеркивает, на слайдах или словами. Затем дожидаешься наконец момента, когда рассказчик приступает к решению и решаешь вместе с ним, тут у тебя уже по идее такой проблемы не будет, так как мозгу твоему на практической части проще будет следить за видео. Прорешиваешь кое-как, не обязательно идеально прям прорешать, но главное, чтобы ты понял суть. Возможно прорешиваешь всё и доходишь до конца видео. Но в конце у тебя 100% останутся разные вопросы и дыры, которые ты не смог закрыть.
      И вот тут-то ты начинаешь смотреть видео заново, можно на 1.5 скорости. И теперь для тебя то, что рассказчик объясняет в начале начнёт иметь смысл и ты начнёшь понимать, про что он вообще говорит и до тебя начнёт доходить.
      Ответ автора тоже подходит, но к сожалению не всем типам изучающих. Я вот так, как он описал, не могу, я изучаю через практику и боль ошибок, а потом только дополняю теорией.

    • @heybeachMIN
      @heybeachMIN 2 місяці тому +1

      @@CadCabade вот кстати хороший совет. Мне тоже часто помогает пересмотреть видео неск раз, потом становится всё яснее и яснее сама идея решения. А насчёт записывать общий смысл интересно попробую.