Тёмный

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

Максим Крюков
Подписаться 17 тыс.
Просмотров 18 тыс.
50% 1

В этом видео мы рассмотрим, что такое сложность алгоритма, какие варианты бывают и решим одну практическую задачу на вращение матрицы.
Ссылка на 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

Опубликовано:

 

27 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 109   
@behappianstudio3576
@behappianstudio3576 2 года назад
Годы идут, кто-то уже бросил Unity, кто-то только начал, а один добрый байкер до сих пор выкладывает сложный, но полезный и в то же время интересный контент!) Бокальчик за вас и с возвращением!)
@gaitavr1992
@gaitavr1992 2 года назад
Я пожалуй парочку тоже выпью, спасибо)
@bigbluepie8983
@bigbluepie8983 2 года назад
Мое уважение автору. Один из немногих, кто объясняет все четко и понятно
@freaking_Lamer
@freaking_Lamer 6 месяцев назад
Офигеть! Услышать музыку из меню unreal tournament здесь я точно не ожидал!😅
@user-ct3pn9ib6f
@user-ct3pn9ib6f 2 года назад
Отличное видео. Твой контент это возможность развиваться. Один из немногих кто очень хорошо знает то, о чем рассказывает.
@Alexander-ko1od
@Alexander-ko1od 2 года назад
Очень крутое видео по алгоритмам, буду ждать продолжения
@Anton-ny6tx
@Anton-ny6tx 2 года назад
Как всегда топ! Моё почтение
@vladisslavss
@vladisslavss 2 года назад
Очень крутая тема! Продолжайте ! Будет интересно посмотреть следущий выпуск
@true_xander
@true_xander Год назад
Отельный респект за музычку, олды поймут
@ThourdTrevelDev
@ThourdTrevelDev 2 года назад
Спасибо Максим за отличный материал, ждём продолжения!
@inskips
@inskips 2 года назад
Спасибо Максим. Как всегда, все максимально доступно. По теме, неплохая книга "Грокаем алгоритмы" Адитья Бхаргава
@user-ug2qg4xq2x
@user-ug2qg4xq2x 2 года назад
Про алгоритмы, да еще и с практической частью? Однозначно НУЖНО
@grimseal
@grimseal 2 года назад
Спасибо, Максим! Было интересно послушать. P.S. Вот это внезапный впрыск ностальгии в конце! Unreal Tournament 1999 навсегда в моем сердечке.
@gaitavr1992
@gaitavr1992 2 года назад
Согласен, у меня тоже)
@raimanchannel3376
@raimanchannel3376 2 года назад
Балдёж) Спасибо за видео!!! Жду продолжения))
@ooDEFENDERoo
@ooDEFENDERoo 2 года назад
Большое спасибо за видео и подробное объяснение!
@Delacrowa
@Delacrowa 2 года назад
Отличное видео. Мало что лайкаю в современном ютабе, но контент выше - действительно стоящий. Обязательно продолжайте тему алгоритмов - очень полезно для молодого поколения =)
@user-gp6mw5zc6z
@user-gp6mw5zc6z 2 года назад
То, что надо, как говорилось у нас в универе - количество информации на чертеже должно быть минимальным, но достаточным для изготовления детали. Все четко и по делу, спасибо)
@user-fd3nw3un7v
@user-fd3nw3un7v 2 года назад
Бахнул лайкос!
@hawwka
@hawwka 2 года назад
Отличное видео! Благодарю за информацию!
@andyunity
@andyunity 2 года назад
Очень доступно. Спасибо!)
@lekojoy7016
@lekojoy7016 Год назад
Я хоть и начинающий, просто искал как сделать алгоритм рандоиного спавна карты и что бы не повторялись части и тут такое нашел что у меня глаза на лоб вылезли, правильно учительница говорила, даже в играх нужна алгебра геометрия и теория вероятностей ((( Спасибо, буду теперь опять проходить учебник с алгебры
@user-wv1to3sg9j
@user-wv1to3sg9j 2 года назад
вот это кстати круть, на собесах часто спрашивают про асимптотику сложности алгоритмов) еще бы конкретных примеров, вообще огонь) но гитхаб если что в помощь)) красавчик конечно) радуешь каждым видео и темой))
@Diyozen
@Diyozen 2 года назад
Отличная тема!
@veiterio
@veiterio 2 года назад
Вот и контент подъехал 🧸
@AhahaStudioTM
@AhahaStudioTM 2 года назад
Класс! Стало более ясно. Спасибо
@user-cj2kg4vq3d
@user-cj2kg4vq3d 2 года назад
Спасибо. Доступно и по делу
@AlexStraga
@AlexStraga 2 года назад
Интересная тема, давай еще)
@ode2877
@ode2877 2 года назад
Круто! Не знаю есть ли такое уже на канале, но было бы интересно посмотреть следующую тему, схожую с данной. Приемы быстрых вычислений, как использование sqrMagnitude вместо magnirude, вычисление скалярных произведений для заведомо нормализованных векторов как forward или up, насколько дорого использовать lookat и так далее
@vladyslavhorbatiuk3089
@vladyslavhorbatiuk3089 2 года назад
Замечательное видео. Не переставай их делать, очень помогает
@gaitavr1992
@gaitavr1992 2 года назад
Рад помочь
@MeaNX
@MeaNX 2 года назад
Огромное спасибо, объяснили по лучшее чем в унике. Хотелось бы увидеть урок про DI Zenject. Было бы полезно по подробнее изучить =)
@mkdir699
@mkdir699 2 года назад
Отличное объяснение как всегда.
@alexeygrachev7984
@alexeygrachev7984 2 года назад
Спасибо!
@malvislightfadynightgames2925
@malvislightfadynightgames2925 2 года назад
Так жаль, что придётся забыть про этот офигенный канал. Всё больше замечаю что ничего нового я уже не получаю от видео. Спасибо тебе большое!!!
@gaitavr1992
@gaitavr1992 2 года назад
Пожалуйста, надеюсь, ты найдёшь того, кто удовлетворит все твои потребности
@Roman_SBB
@Roman_SBB 2 года назад
Это конечно сложно, для меня, но всё-таки что-то усвоил. Спасибо
@lesha2529
@lesha2529 2 года назад
Очень интересно :)
@user-lc7jj4np8h
@user-lc7jj4np8h 2 года назад
круто! спасибо
@user-tl2in2il3l
@user-tl2in2il3l 2 года назад
Раньше знал о том что такая фича существует но не понимал как оно работает. Спасибо за полезный ролик, теперь всё стало ясно!
@_mirai
@_mirai 2 года назад
лайк и комментарий, для того чтобы показать, что тема интересная
@user-bc4me5kz7j
@user-bc4me5kz7j 2 года назад
Спасибо большое за старания! Отличный видеоролик с мало раскрытой для большинства программистов темой. С нетерпением жду новые видео.
@andrey_aka_skif
@andrey_aka_skif 2 года назад
Кстати, в институте это проходят на первом-втором курсе. Ну, тогда, когда ты вообще не понимаешь, зачем вот это всё, и что ты вообще здесь делаешь, кроме получения отсрочки от армии :-D Подозреваю, что в ежедневной практике алгоритмы нужны так же, как и паттерны - в ряде специфических задач. В иных ситуациях написание своей сортировки, вместо вызова метода библиотеки/фреймворка чревато вероятным выстрелом в ногу.
@user-ox2do3yj2y
@user-ox2do3yj2y 2 года назад
Давай больше алгоритмов!
@angelxzs1
@angelxzs1 2 года назад
Спасибо большое. Отличное объяснение как всегда!) Подскажите, туториала про adressables не планируется?
@gaitavr1992
@gaitavr1992 2 года назад
Будет сразу на примере tower defence
@timurnikolaev1438
@timurnikolaev1438 2 года назад
понравилось
@aibaster
@aibaster 2 года назад
yes.Yes. Yes. Yes! YEESSSSS!!!!
@kirillsviderski4739
@kirillsviderski4739 2 года назад
2:50 в общем случае зависит от того, а каким образом написан словарь. Если на основе дерева - уже логарифм
@vladislavyurevich2247
@vladislavyurevich2247 2 года назад
В Dictionary используется хеш-таблица, а не бинарное дерево
@user-xz5ce7jp8f
@user-xz5ce7jp8f 2 года назад
зачем я это смотрю в 3 часа ночи 😵‍💫
@yuraparashynets7143
@yuraparashynets7143 2 года назад
Хорошая задача! Спасибо, решил тем же способом, но чуть по другому 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; }
@andrey_aka_skif
@andrey_aka_skif 2 года назад
Бывают же в жизни совпадения! На прошлой неделе как раз открыл Кормена, чтобы немного мозги прокачать. И тут такой подгон замечательный. Кстати, сегодня (13.09) ещё и ExtremeCode рофлят про пузырьковую сортировку. Как планируется дружить алгоритмы с Unity?
@gaitavr1992
@gaitavr1992 2 года назад
Я не вижу никаких преград в юнити для этого
@andrey_aka_skif
@andrey_aka_skif 2 года назад
@@gaitavr1992 вопрос не в этом 😀 Интересуюсь, с чего именно хотите начать. И насколько примеры будут отражать типовые задачи разработки.
@gaitavr1992
@gaitavr1992 2 года назад
Я бы хотел для начала покрыть структуры данных, например как работает словарь внутри. Задачки разные будут, но в целом буду пытаться адаптировать к юнити среде
@user-zx6fq1ig4h
@user-zx6fq1ig4h 2 года назад
А где вы взяли эти клевые gif-ки для анимации бинарного поиска? Можно ссылку? Заранее спасибо.
@gaitavr1992
@gaitavr1992 2 года назад
Отсюда - blog.penjee.com/binary-vs-linear-search-animated-gifs/
@user-zx6fq1ig4h
@user-zx6fq1ig4h 2 года назад
@@gaitavr1992 благодарю
@Eduard02834
@Eduard02834 2 года назад
+
@grandlagging0zero175
@grandlagging0zero175 2 года назад
Это все круто! НО не лучше бы было просто накидать картинок и примеров работы алгоритма, без кода?
@gaitavr1992
@gaitavr1992 2 года назад
Я в первую очередь программист, и не очень умею делать картинки, поэтому их минимум
@orembo112play4
@orembo112play4 2 года назад
Как сделать такой же шейдер как в начале или же как называется такой еффект сливания частиц?
@bryarey
@bryarey 2 года назад
Гуглите метасферы (meatballs). Где-то был в открытом доступе проект, простая реализация, которая простраивает меш по заданным центрам/радиусам сфер.
@orembo112play4
@orembo112play4 2 года назад
@@bryarey спасибо🙏
@spacetraveller4826
@spacetraveller4826 2 года назад
Привет а ты на заказ работаешь? Нужно реализовать в Unity, открытый мир состоящий из нескольких чанков, так чтобы потгрузка шла по 9 чанков, и была возможность отключать лишние чанки при работе в редакторе.
@Sky-pg8ot
@Sky-pg8ot 2 года назад
Зачем, очередной Майнкрафт будешь делать?
@gaitavr1992
@gaitavr1992 2 года назад
Нет, я на дядю работаю. Присоединяюсь к комментарию выше - клонов майнкрафта хватает
@spacetraveller4826
@spacetraveller4826 2 года назад
Ну это не про клон Майнкрафт а, ну спс понял
@andrey_aka_skif
@andrey_aka_skif 2 года назад
@@spacetraveller4826 вот те раз. Я думал, ты тонко рофлишь. А ты на полном серьёзе... >_
@iurii
@iurii 2 года назад
О() очень важное понятие в играх, где производительность - одно из ключевых характеристик. Я бы добавил, что О() не учитывает характеристик компьютера, таких как скорость доступа к ОЗУ и кеша. Иногда линейный алгоритм с cache friendly доступом к памяти быстрее логарифма с случайным доступом к памяти именно из-за кеша.
@gaitavr1992
@gaitavr1992 2 года назад
Я об этом и говорил, что нет смысла переходить на этот уровень в рамках оценки алгоритма. Характеристики девайса - не константа, поэтому нет смысла вносить дополнительные переменные
@ko-games7768
@ko-games7768 2 года назад
В дальнейшем такие видео будут?
@gaitavr1992
@gaitavr1992 2 года назад
Надеюсь аудитории зайдет, тогда конечно
@ko-games7768
@ko-games7768 2 года назад
@@gaitavr1992 Да конечно зайдёт.
@_kk_
@_kk_ 2 года назад
Получается сложность у метода 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 года назад
Аргументируете?
@vatyunga
@vatyunga 2 года назад
Самая большая загадка видео - кто и зачем сделал у чёрного текста на светлом фоне тень...
@yukiokamidzu3808
@yukiokamidzu3808 2 года назад
Здравствуйте вопрос максимально возможном глупый я начал изучать c# c целью создания игр мои знания математики ничтожно малы я в жизни ни одного уравнения не решил я буквально в Школьные годы был двоечником сейчас начал проходить самостоятельно всю школьную программу заново чтобы постепенно продвигаться дальше правильно я вообще делаю или это пустая трата времени
@gaitavr1992
@gaitavr1992 2 года назад
Вас может математика не пригодиться вообще, поэтому изучайте шарп и юнити
@yukiokamidzu3808
@yukiokamidzu3808 2 года назад
@@gaitavr1992 Ясно спасибо
@MechanicSuperman
@MechanicSuperman 2 года назад
Нихрена не понял. Но очень интересно
@winrar3818
@winrar3818 2 года назад
к сожалению ничего не понял но очень интересно
@gaitavr1992
@gaitavr1992 2 года назад
Совсем ничего?
@winrar3818
@winrar3818 2 года назад
@@gaitavr1992 это не твоя вина это у меня мозгов не хватает, может потом пойму
@user-jn5ht8jn8p
@user-jn5ht8jn8p 2 года назад
@@gaitavr1992 приветствую, можете посоветовать хороший курс по C#?
@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 и НИ РАЗУ не пригодились знания из алгоритмов и структур данных
@dmitriypermyakov6579
@dmitriypermyakov6579 2 года назад
Вроде по русски говорит, но ничего не понятно.
@gaitavr1992
@gaitavr1992 2 года назад
Если зададите конкретный вопрос, что непонятно - отвечу
@Maestrosuper1989
@Maestrosuper1989 Год назад
Да я скажу, что тема очень интересная, но не понятная
Далее
⚡ Всё про события в Unity 3D
21:38
Просмотров 102 тыс.