Что такое сложность алгоритма на примере 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
Годы идут, кто-то уже бросил Unity, кто-то только начал, а один добрый байкер до сих пор выкладывает сложный, но полезный и в то же время интересный контент!) Бокальчик за вас и с возвращением!)
Я пожалуй парочку тоже выпью, спасибо)
Мое уважение автору.
Один из немногих, кто объясняет все четко и понятно
Офигеть! Услышать музыку из меню unreal tournament здесь я точно не ожидал!😅
Отличное видео. Твой контент это возможность развиваться. Один из немногих кто очень хорошо знает то, о чем рассказывает.
Очень крутая тема!
Продолжайте !
Будет интересно посмотреть следущий выпуск
Очень крутое видео по алгоритмам, буду ждать продолжения
Спасибо Максим за отличный материал, ждём продолжения!
Как всегда топ! Моё почтение
Балдёж) Спасибо за видео!!! Жду продолжения))
Большое спасибо за видео и подробное объяснение!
Я хоть и начинающий, просто искал как сделать алгоритм рандоиного спавна карты и что бы не повторялись части и тут такое нашел что у меня глаза на лоб вылезли, правильно учительница говорила, даже в играх нужна алгебра геометрия и теория вероятностей ((( Спасибо, буду теперь опять проходить учебник с алгебры
Отличное видео!
Благодарю за информацию!
Спасибо Максим. Как всегда, все максимально доступно. По теме, неплохая книга "Грокаем алгоритмы" Адитья Бхаргава
Отличное видео. Мало что лайкаю в современном ютабе, но контент выше - действительно стоящий. Обязательно продолжайте тему алгоритмов - очень полезно для молодого поколения =)
Очень доступно. Спасибо!)
То, что надо, как говорилось у нас в универе - количество информации на чертеже должно быть минимальным, но достаточным для изготовления детали. Все четко и по делу, спасибо)
Про алгоритмы, да еще и с практической частью? Однозначно НУЖНО
Замечательное видео. Не переставай их делать, очень помогает
Рад помочь
Класс! Стало более ясно. Спасибо
вот это кстати круть, на собесах часто спрашивают про асимптотику сложности алгоритмов) еще бы конкретных примеров, вообще огонь) но гитхаб если что в помощь)) красавчик конечно) радуешь каждым видео и темой))
Отельный респект за музычку, олды поймут
Огромное спасибо, объяснили по лучшее чем в унике. Хотелось бы увидеть урок про DI Zenject. Было бы полезно по подробнее изучить =)
Спасибо. Доступно и по делу
Отличное объяснение как всегда.
Круто! Не знаю есть ли такое уже на канале, но было бы интересно посмотреть следующую тему, схожую с данной. Приемы быстрых вычислений, как использование sqrMagnitude вместо magnirude, вычисление скалярных произведений для заведомо нормализованных векторов как forward или up, насколько дорого использовать lookat и так далее
Это конечно сложно, для меня, но всё-таки что-то усвоил. Спасибо
Интересная тема, давай еще)
Отличная тема!
Спасибо, Максим! Было интересно послушать.
P.S. Вот это внезапный впрыск ностальгии в конце! Unreal Tournament 1999 навсегда в моем сердечке.
Согласен, у меня тоже)
Раньше знал о том что такая фича существует но не понимал как оно работает. Спасибо за полезный ролик, теперь всё стало ясно!
лайк и комментарий, для того чтобы показать, что тема интересная
Вот и контент подъехал 🧸
Давай больше алгоритмов!
Спасибо!
круто! спасибо
Очень интересно :)
Бахнул лайкос!
Так жаль, что придётся забыть про этот офигенный канал. Всё больше замечаю что ничего нового я уже не получаю от видео. Спасибо тебе большое!!!
Пожалуйста, надеюсь, ты найдёшь того, кто удовлетворит все твои потребности
Спасибо большое. Отличное объяснение как всегда!) Подскажите, туториала про adressables не планируется?
Будет сразу на примере tower defence
понравилось
yes.Yes. Yes. Yes! YEESSSSS!!!!
Спасибо большое за старания! Отличный видеоролик с мало раскрытой для большинства программистов темой. С нетерпением жду новые видео.
Кстати, в институте это проходят на первом-втором курсе. Ну, тогда, когда ты вообще не понимаешь, зачем вот это всё, и что ты вообще здесь делаешь, кроме получения отсрочки от армии :-D Подозреваю, что в ежедневной практике алгоритмы нужны так же, как и паттерны - в ряде специфических задач. В иных ситуациях написание своей сортировки, вместо вызова метода библиотеки/фреймворка чревато вероятным выстрелом в ногу.
зачем я это смотрю в 3 часа ночи 😵💫
2:50 в общем случае зависит от того, а каким образом написан словарь. Если на основе дерева - уже логарифм
В Dictionary используется хеш-таблица, а не бинарное дерево
Хорошая задача! Спасибо, решил тем же способом, но чуть по другому
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 Полностью согласен, спасибо
Так будет немного лучше :-)
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;
}
А где вы взяли эти клевые gif-ки для анимации бинарного поиска? Можно ссылку? Заранее спасибо.
Отсюда - blog.penjee.com/binary-vs-linear-search-animated-gifs/
@@gaitavr1992 благодарю
Бывают же в жизни совпадения! На прошлой неделе как раз открыл Кормена, чтобы немного мозги прокачать. И тут такой подгон замечательный. Кстати, сегодня (13.09) ещё и ExtremeCode рофлят про пузырьковую сортировку.
Как планируется дружить алгоритмы с Unity?
Я не вижу никаких преград в юнити для этого
@@gaitavr1992 вопрос не в этом 😀 Интересуюсь, с чего именно хотите начать. И насколько примеры будут отражать типовые задачи разработки.
Я бы хотел для начала покрыть структуры данных, например как работает словарь внутри. Задачки разные будут, но в целом буду пытаться адаптировать к юнити среде
Как сделать такой же шейдер как в начале или же как называется такой еффект сливания частиц?
Гуглите метасферы (meatballs). Где-то был в открытом доступе проект, простая реализация, которая простраивает меш по заданным центрам/радиусам сфер.
@@bryarey спасибо🙏
О() очень важное понятие в играх, где производительность - одно из ключевых характеристик. Я бы добавил, что О() не учитывает характеристик компьютера, таких как скорость доступа к ОЗУ и кеша. Иногда линейный алгоритм с cache friendly доступом к памяти быстрее логарифма с случайным доступом к памяти именно из-за кеша.
Я об этом и говорил, что нет смысла переходить на этот уровень в рамках оценки алгоритма. Характеристики девайса - не константа, поэтому нет смысла вносить дополнительные переменные
+
Это все круто! НО не лучше бы было просто накидать картинок и примеров работы алгоритма, без кода?
Я в первую очередь программист, и не очень умею делать картинки, поэтому их минимум
В дальнейшем такие видео будут?
Надеюсь аудитории зайдет, тогда конечно
@@gaitavr1992 Да конечно зайдёт.
Привет а ты на заказ работаешь? Нужно реализовать в Unity, открытый мир состоящий из нескольких чанков, так чтобы потгрузка шла по 9 чанков, и была возможность отключать лишние чанки при работе в редакторе.
Зачем, очередной Майнкрафт будешь делать?
Нет, я на дядю работаю. Присоединяюсь к комментарию выше - клонов майнкрафта хватает
Ну это не про клон Майнкрафт а, ну спс понял
@@spacetraveller4826 вот те раз. Я думал, ты тонко рофлишь. А ты на полном серьёзе... >_
Получается сложность у метода Rotate в последней задаче O( (n / 2) * (n / 2) ) = O(n^2) ?
Да, n^2 получается, спасибо за активность
Это если n принять за размер матрицы. Если взять m за количество элементов в матрице, тогда m = n^2. А сложность линейная по m будет , т.е. О(m) или О(n^2). Просто квадрат тут, это свойство матрицы, а не алгоритма. Что думаете?
При каждом увеличении n - m будет увеличиваться нелинейно, поэтому смысла в записи O(m) не вижу
@@gaitavr1992 а зря ;)
Аргументируете?
Здравствуйте вопрос максимально возможном глупый я начал изучать c# c целью создания игр
мои знания математики ничтожно малы я в жизни ни одного уравнения не решил я буквально в Школьные годы был двоечником сейчас начал проходить самостоятельно всю школьную программу заново чтобы постепенно продвигаться дальше правильно я вообще делаю или это пустая трата времени
Вас может математика не пригодиться вообще, поэтому изучайте шарп и юнити
@@gaitavr1992 Ясно спасибо
Самая большая загадка видео - кто и зачем сделал у чёрного текста на светлом фоне тень...
к сожалению ничего не понял но очень интересно
Совсем ничего?
@@gaitavr1992 это не твоя вина это у меня мозгов не хватает, может потом пойму
@@gaitavr1992 приветствую, можете посоветовать хороший курс по C#?
Нихрена не понял. Но очень интересно
Сложная инфа, меня только на пол видео хватило
Объяснения весьма хороши, однако не совсем понятно зачем покащывать все это в шаблоне unity. Понимание сложности алгоритмов это конечно важно, но важно и понимать что надо правильно писать код - в данном случаи речь идет про ввод вывод и не требует нагрузки всех библиотек unity.
Еще то на что я обратил внимание это описание типа обьектов в вашей программе - не совсем ясна цель постоянного использования ключевого слова var. Причем ладно бы он заменял длинные наименования, но нет, он заменяет обучный тип int, к слову это в коде подчеркивается следующим образом:
var blabla: int = ...
Так почему бы просто не написать
int: blabla = ...
?
Я может чего не понимаю но мне лично это глаза мазолит.
У меня все видео касаются юнити, поэтому и примеры все адаптируются соответствующим образом. Что касается var, то это стилистика кода, я так всегда пищу и сам райдер способствует такому написанию
блять 5 лет работаю с Unity и НИ РАЗУ не пригодились знания из алгоритмов и структур данных
Да я скажу, что тема очень интересная, но не понятная
Вроде по русски говорит, но ничего не понятно.
Если зададите конкретный вопрос, что непонятно - отвечу