Что такое сложность алгоритма на примере C# и Unity3D. Как оценить сложность алгоритма

Поділитися
Вставка
  • Опубліковано 3 чер 2024
  • В этом видео мы рассмотрим, что такое сложность алгоритма, какие варианты бывают и решим одну практическую задачу на вращение матрицы.
    Ссылка на Discord - / discord
    Исходный код - github.com/gaitavr/Algorithms...
    Паблик игроделов - special3d
    "00:00 - Введение"
    "00:34 - Зачем нужны алгоритмы и структуры данных?"
    "01:13 - Теория сложности алгоритмов"
    "02:19 - Варианты роста сложности алгоритма"
    "06:54 - Оценка сложности алгоритма"
    "10:15 - Задача - как повернуть матрицу"
    Поддержка канала:
    Patreon - www.patreon.com/user?u=32502669
    В крипте:
    BTC - 16WmTb4VTFGYrwEjjnMKNNMMzsMB1rPEqD
    ETH - 0x8d35406f8317b846528d0a9ea4a34ce59968dff2
    XRP - rLW9gnQo7BQhU6igk5keqYnH3TVrCxGRzm (TAG - 1438215071)
    LTC- MNSWdzdVsUMnozSU5HhUPEscfxaUK3Fdck
    #unity3d #алгоритмы #геймдев #программирование #ityoutubersru

КОМЕНТАРІ • 109

  • @behappianstudio3576
    @behappianstudio3576 2 роки тому +98

    Годы идут, кто-то уже бросил Unity, кто-то только начал, а один добрый байкер до сих пор выкладывает сложный, но полезный и в то же время интересный контент!) Бокальчик за вас и с возвращением!)

    • @gaitavr1992
      @gaitavr1992  2 роки тому +25

      Я пожалуй парочку тоже выпью, спасибо)

  • @bigbluepie8983
    @bigbluepie8983 2 роки тому +17

    Мое уважение автору.
    Один из немногих, кто объясняет все четко и понятно

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

    Офигеть! Услышать музыку из меню unreal tournament здесь я точно не ожидал!😅

  • @user-ct3pn9ib6f
    @user-ct3pn9ib6f 2 роки тому +6

    Отличное видео. Твой контент это возможность развиваться. Один из немногих кто очень хорошо знает то, о чем рассказывает.

  • @vladisslavss
    @vladisslavss 2 роки тому +2

    Очень крутая тема!
    Продолжайте !
    Будет интересно посмотреть следущий выпуск

  • @Alexander-ko1od
    @Alexander-ko1od 2 роки тому +4

    Очень крутое видео по алгоритмам, буду ждать продолжения

  • @ThourdTrevelDev
    @ThourdTrevelDev 2 роки тому

    Спасибо Максим за отличный материал, ждём продолжения!

  • @Anton-ny6tx
    @Anton-ny6tx 2 роки тому +9

    Как всегда топ! Моё почтение

  • @raimanchannel3376
    @raimanchannel3376 2 роки тому

    Балдёж) Спасибо за видео!!! Жду продолжения))

  • @ooDEFENDERoo
    @ooDEFENDERoo 2 роки тому +1

    Большое спасибо за видео и подробное объяснение!

  • @lekojoy7016
    @lekojoy7016 Рік тому

    Я хоть и начинающий, просто искал как сделать алгоритм рандоиного спавна карты и что бы не повторялись части и тут такое нашел что у меня глаза на лоб вылезли, правильно учительница говорила, даже в играх нужна алгебра геометрия и теория вероятностей ((( Спасибо, буду теперь опять проходить учебник с алгебры

  • @hawwka
    @hawwka 2 роки тому

    Отличное видео!
    Благодарю за информацию!

  • @inskips
    @inskips 2 роки тому +2

    Спасибо Максим. Как всегда, все максимально доступно. По теме, неплохая книга "Грокаем алгоритмы" Адитья Бхаргава

  • @Delacrowa
    @Delacrowa 2 роки тому

    Отличное видео. Мало что лайкаю в современном ютабе, но контент выше - действительно стоящий. Обязательно продолжайте тему алгоритмов - очень полезно для молодого поколения =)

  • @andyunity
    @andyunity 2 роки тому

    Очень доступно. Спасибо!)

  • @user-gp6mw5zc6z
    @user-gp6mw5zc6z 2 роки тому

    То, что надо, как говорилось у нас в универе - количество информации на чертеже должно быть минимальным, но достаточным для изготовления детали. Все четко и по делу, спасибо)

  • @user-ug2qg4xq2x
    @user-ug2qg4xq2x 2 роки тому

    Про алгоритмы, да еще и с практической частью? Однозначно НУЖНО

  • @vladyslavhorbatiuk3089
    @vladyslavhorbatiuk3089 2 роки тому +7

    Замечательное видео. Не переставай их делать, очень помогает

  • @AhahaStudioTM
    @AhahaStudioTM 2 роки тому

    Класс! Стало более ясно. Спасибо

  • @user-wv1to3sg9j
    @user-wv1to3sg9j 2 роки тому

    вот это кстати круть, на собесах часто спрашивают про асимптотику сложности алгоритмов) еще бы конкретных примеров, вообще огонь) но гитхаб если что в помощь)) красавчик конечно) радуешь каждым видео и темой))

  • @true_xander
    @true_xander Рік тому

    Отельный респект за музычку, олды поймут

  • @MeaNX
    @MeaNX 2 роки тому

    Огромное спасибо, объяснили по лучшее чем в унике. Хотелось бы увидеть урок про DI Zenject. Было бы полезно по подробнее изучить =)

  • @user-cj2kg4vq3d
    @user-cj2kg4vq3d 2 роки тому

    Спасибо. Доступно и по делу

  • @mkdir699
    @mkdir699 2 роки тому

    Отличное объяснение как всегда.

  • @ode2877
    @ode2877 2 роки тому

    Круто! Не знаю есть ли такое уже на канале, но было бы интересно посмотреть следующую тему, схожую с данной. Приемы быстрых вычислений, как использование sqrMagnitude вместо magnirude, вычисление скалярных произведений для заведомо нормализованных векторов как forward или up, насколько дорого использовать lookat и так далее

  • @Roman_SBB
    @Roman_SBB 2 роки тому

    Это конечно сложно, для меня, но всё-таки что-то усвоил. Спасибо

  • @AlexStraga
    @AlexStraga 2 роки тому

    Интересная тема, давай еще)

  • @Diyozen
    @Diyozen 2 роки тому +1

    Отличная тема!

  • @grimseal
    @grimseal 2 роки тому +1

    Спасибо, Максим! Было интересно послушать.
    P.S. Вот это внезапный впрыск ностальгии в конце! Unreal Tournament 1999 навсегда в моем сердечке.

    • @gaitavr1992
      @gaitavr1992  2 роки тому +1

      Согласен, у меня тоже)

  • @user-tl2in2il3l
    @user-tl2in2il3l 2 роки тому

    Раньше знал о том что такая фича существует но не понимал как оно работает. Спасибо за полезный ролик, теперь всё стало ясно!

  • @_mirai
    @_mirai 2 роки тому

    лайк и комментарий, для того чтобы показать, что тема интересная

  • @veiterio
    @veiterio 2 роки тому

    Вот и контент подъехал 🧸

  • @user-ox2do3yj2y
    @user-ox2do3yj2y 2 роки тому

    Давай больше алгоритмов!

  • @alexeygrachev7984
    @alexeygrachev7984 2 роки тому +1

    Спасибо!

  • @user-lc7jj4np8h
    @user-lc7jj4np8h 2 роки тому

    круто! спасибо

  • @lesha2529
    @lesha2529 2 роки тому

    Очень интересно :)

  • @user-fd3nw3un7v
    @user-fd3nw3un7v 2 роки тому

    Бахнул лайкос!

  • @malvislightfadynightgames2925
    @malvislightfadynightgames2925 2 роки тому

    Так жаль, что придётся забыть про этот офигенный канал. Всё больше замечаю что ничего нового я уже не получаю от видео. Спасибо тебе большое!!!

    • @gaitavr1992
      @gaitavr1992  2 роки тому +1

      Пожалуйста, надеюсь, ты найдёшь того, кто удовлетворит все твои потребности

  • @angelxzs1
    @angelxzs1 2 роки тому +2

    Спасибо большое. Отличное объяснение как всегда!) Подскажите, туториала про adressables не планируется?

    • @gaitavr1992
      @gaitavr1992  2 роки тому +7

      Будет сразу на примере tower defence

  • @timurnikolaev1438
    @timurnikolaev1438 2 роки тому +1

    понравилось

  • @aibaster
    @aibaster 2 роки тому +1

    yes.Yes. Yes. Yes! YEESSSSS!!!!

  • @user-bc4me5kz7j
    @user-bc4me5kz7j 2 роки тому +2

    Спасибо большое за старания! Отличный видеоролик с мало раскрытой для большинства программистов темой. С нетерпением жду новые видео.

    • @andrey_aka_skif
      @andrey_aka_skif 2 роки тому

      Кстати, в институте это проходят на первом-втором курсе. Ну, тогда, когда ты вообще не понимаешь, зачем вот это всё, и что ты вообще здесь делаешь, кроме получения отсрочки от армии :-D Подозреваю, что в ежедневной практике алгоритмы нужны так же, как и паттерны - в ряде специфических задач. В иных ситуациях написание своей сортировки, вместо вызова метода библиотеки/фреймворка чревато вероятным выстрелом в ногу.

  • @user-xz5ce7jp8f
    @user-xz5ce7jp8f 2 роки тому +1

    зачем я это смотрю в 3 часа ночи 😵‍💫

  • @kirillsviderski4739
    @kirillsviderski4739 2 роки тому +6

    2:50 в общем случае зависит от того, а каким образом написан словарь. Если на основе дерева - уже логарифм

    • @vladislavyurevich2247
      @vladislavyurevich2247 2 роки тому

      В Dictionary используется хеш-таблица, а не бинарное дерево

  • @yuraparashynets7143
    @yuraparashynets7143 2 роки тому +1

    Хорошая задача! Спасибо, решил тем же способом, но чуть по другому
    static List MoveByDegrees(List arr)
    {
    List copiedArr = JsonSerializer.Deserialize(JsonSerializer.Serialize(arr));
    for (int i = 0; i < arr.Count; i++)
    {
    int indexX = arr[i].Count - 1;
    for (int j = 0; j < arr[i].Count; j++)
    {
    copiedArr[i][j] = arr[indexX][i];
    indexX--;
    }
    }
    return copiedArr;
    }

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Только памяти жрет больше

    • @yuraparashynets7143
      @yuraparashynets7143 2 роки тому

      @@gaitavr1992 Полностью согласен, спасибо
      Так будет немного лучше :-)
      public int[][] MoveByDegrees(int[][] arr)
      {
      int[][] copiedArr = new int[arr.Length][];
      for (int i = 0; i < arr.Length; i++)
      {
      copiedArr[i] = new int[arr[i].Length];
      int indexX = arr[i].Length - 1;
      for (int j = 0; j < arr[i].Length; j++)
      {
      copiedArr[i][j] = arr[indexX][i];
      indexX--;
      }
      }
      return copiedArr;
      }

  • @user-zx6fq1ig4h
    @user-zx6fq1ig4h 2 роки тому +1

    А где вы взяли эти клевые gif-ки для анимации бинарного поиска? Можно ссылку? Заранее спасибо.

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Отсюда - blog.penjee.com/binary-vs-linear-search-animated-gifs/

    • @user-zx6fq1ig4h
      @user-zx6fq1ig4h 2 роки тому

      @@gaitavr1992 благодарю

  • @andrey_aka_skif
    @andrey_aka_skif 2 роки тому +1

    Бывают же в жизни совпадения! На прошлой неделе как раз открыл Кормена, чтобы немного мозги прокачать. И тут такой подгон замечательный. Кстати, сегодня (13.09) ещё и ExtremeCode рофлят про пузырьковую сортировку.
    Как планируется дружить алгоритмы с Unity?

    • @gaitavr1992
      @gaitavr1992  2 роки тому +2

      Я не вижу никаких преград в юнити для этого

    • @andrey_aka_skif
      @andrey_aka_skif 2 роки тому

      @@gaitavr1992 вопрос не в этом 😀 Интересуюсь, с чего именно хотите начать. И насколько примеры будут отражать типовые задачи разработки.

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Я бы хотел для начала покрыть структуры данных, например как работает словарь внутри. Задачки разные будут, но в целом буду пытаться адаптировать к юнити среде

  • @orembo112play4
    @orembo112play4 2 роки тому +1

    Как сделать такой же шейдер как в начале или же как называется такой еффект сливания частиц?

    • @bryarey
      @bryarey 2 роки тому

      Гуглите метасферы (meatballs). Где-то был в открытом доступе проект, простая реализация, которая простраивает меш по заданным центрам/радиусам сфер.

    • @orembo112play4
      @orembo112play4 2 роки тому

      @@bryarey спасибо🙏

  • @iurii
    @iurii 2 роки тому +2

    О() очень важное понятие в играх, где производительность - одно из ключевых характеристик. Я бы добавил, что О() не учитывает характеристик компьютера, таких как скорость доступа к ОЗУ и кеша. Иногда линейный алгоритм с cache friendly доступом к памяти быстрее логарифма с случайным доступом к памяти именно из-за кеша.

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Я об этом и говорил, что нет смысла переходить на этот уровень в рамках оценки алгоритма. Характеристики девайса - не константа, поэтому нет смысла вносить дополнительные переменные

  • @Eduard02834
    @Eduard02834 2 роки тому

    +

  • @grandlagging0zero175
    @grandlagging0zero175 2 роки тому

    Это все круто! НО не лучше бы было просто накидать картинок и примеров работы алгоритма, без кода?

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Я в первую очередь программист, и не очень умею делать картинки, поэтому их минимум

  • @ko-games7768
    @ko-games7768 2 роки тому +3

    В дальнейшем такие видео будут?

    • @gaitavr1992
      @gaitavr1992  2 роки тому +5

      Надеюсь аудитории зайдет, тогда конечно

    • @ko-games7768
      @ko-games7768 2 роки тому +1

      @@gaitavr1992 Да конечно зайдёт.

  • @spacetraveller4826
    @spacetraveller4826 2 роки тому

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

    • @Sky-pg8ot
      @Sky-pg8ot 2 роки тому +1

      Зачем, очередной Майнкрафт будешь делать?

    • @gaitavr1992
      @gaitavr1992  2 роки тому +1

      Нет, я на дядю работаю. Присоединяюсь к комментарию выше - клонов майнкрафта хватает

    • @spacetraveller4826
      @spacetraveller4826 2 роки тому +1

      Ну это не про клон Майнкрафт а, ну спс понял

    • @andrey_aka_skif
      @andrey_aka_skif 2 роки тому +1

      @@spacetraveller4826 вот те раз. Я думал, ты тонко рофлишь. А ты на полном серьёзе... >_

  • @_kk_
    @_kk_ 2 роки тому +4

    Получается сложность у метода Rotate в последней задаче O( (n / 2) * (n / 2) ) = O(n^2) ?

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Да, n^2 получается, спасибо за активность

    • @iurii
      @iurii 2 роки тому

      Это если n принять за размер матрицы. Если взять m за количество элементов в матрице, тогда m = n^2. А сложность линейная по m будет , т.е. О(m) или О(n^2). Просто квадрат тут, это свойство матрицы, а не алгоритма. Что думаете?

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      При каждом увеличении n - m будет увеличиваться нелинейно, поэтому смысла в записи O(m) не вижу

    • @iurii
      @iurii 2 роки тому

      @@gaitavr1992 а зря ;)

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Аргументируете?

  • @yukiokamidzu3808
    @yukiokamidzu3808 2 роки тому

    Здравствуйте вопрос максимально возможном глупый я начал изучать c# c целью создания игр
    мои знания математики ничтожно малы я в жизни ни одного уравнения не решил я буквально в Школьные годы был двоечником сейчас начал проходить самостоятельно всю школьную программу заново чтобы постепенно продвигаться дальше правильно я вообще делаю или это пустая трата времени

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Вас может математика не пригодиться вообще, поэтому изучайте шарп и юнити

    • @yukiokamidzu3808
      @yukiokamidzu3808 2 роки тому

      @@gaitavr1992 Ясно спасибо

  • @vatyunga
    @vatyunga 2 роки тому +1

    Самая большая загадка видео - кто и зачем сделал у чёрного текста на светлом фоне тень...

  • @winrar3818
    @winrar3818 2 роки тому

    к сожалению ничего не понял но очень интересно

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Совсем ничего?

    • @winrar3818
      @winrar3818 2 роки тому

      @@gaitavr1992 это не твоя вина это у меня мозгов не хватает, может потом пойму

    • @user-jn5ht8jn8p
      @user-jn5ht8jn8p 2 роки тому

      @@gaitavr1992 приветствую, можете посоветовать хороший курс по C#?

  • @MechanicSuperman
    @MechanicSuperman 2 роки тому

    Нихрена не понял. Но очень интересно

  • @user-sd5ep6qe8t
    @user-sd5ep6qe8t 2 роки тому

    Сложная инфа, меня только на пол видео хватило

  • @marktikhonov8495
    @marktikhonov8495 2 роки тому

    Объяснения весьма хороши, однако не совсем понятно зачем покащывать все это в шаблоне unity. Понимание сложности алгоритмов это конечно важно, но важно и понимать что надо правильно писать код - в данном случаи речь идет про ввод вывод и не требует нагрузки всех библиотек unity.
    Еще то на что я обратил внимание это описание типа обьектов в вашей программе - не совсем ясна цель постоянного использования ключевого слова var. Причем ладно бы он заменял длинные наименования, но нет, он заменяет обучный тип int, к слову это в коде подчеркивается следующим образом:
    var blabla: int = ...
    Так почему бы просто не написать
    int: blabla = ...
    ?
    Я может чего не понимаю но мне лично это глаза мазолит.

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      У меня все видео касаются юнити, поэтому и примеры все адаптируются соответствующим образом. Что касается var, то это стилистика кода, я так всегда пищу и сам райдер способствует такому написанию

  • @gamesdevel
    @gamesdevel 2 роки тому

    блять 5 лет работаю с Unity и НИ РАЗУ не пригодились знания из алгоритмов и структур данных

  • @Maestrosuper1989
    @Maestrosuper1989 Рік тому

    Да я скажу, что тема очень интересная, но не понятная

  • @dmitriypermyakov6579
    @dmitriypermyakov6579 2 роки тому +1

    Вроде по русски говорит, но ничего не понятно.

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Если зададите конкретный вопрос, что непонятно - отвечу