ВСЯ СЛОЖНОСТЬ АЛГОРИТМОВ ЗА 11 МИНУТ | ОСНОВЫ ПРОГРАММИРОВАНИЯ

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

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

  • @AlekOS
    @AlekOS  Год назад +24

    Все ролики дублируются ВК без рекламы - clck.ru/3DVErY
    Телеграм-канал: t.me/Alek_OS

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

      Хорошо.

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

      Добавишь видосы на рутуб? У тебя там даже канал есть

    • @LithiumDeuteride-6
      @LithiumDeuteride-6 Год назад

      Интересно, а как ещё описываются степень параллелизма алгоритма, т.е. если у нас есть процессор 1/1 и задачу он считает за 1 единицу времени, а может ли процессор 2/2 подсчитать туже задачу за 0.5 времени. Думаю такой параметр алгоритма сейчас наиважнейший, т.к. быстродействие потока ограничена и со временем намного не возрастёт, а вот количество потоков который может выполнить вычислительное устройство со временем возрастает, например видеокарты, да и у процессоров всё больше ядер/потоков.

  • @dalerd1074
    @dalerd1074 Год назад +40

    Я когда смотрел, думал о смысле жизни

  • @alexone899
    @alexone899 Год назад +302

    Исходя из скорости выхода новых видео могу предположить что количество подписок экспоненциально растёт.

    • @maltamagistro
      @maltamagistro Год назад +17

      Скорей это значит, что заказы на рекламу экспоненциально растут

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

      @@maltamagistro ну и что в этом плохого?) Видео автора то хороши.

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

      С таким качеством роликов думаю это продлится недолго.

    • @Noname-ec8mw
      @Noname-ec8mw Год назад

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

    • @nics51
      @nics51 Месяц назад

      @@dmaraptor ???

  • @kam1k4dze
    @kam1k4dze Год назад +383

    Стоит упомянуть, что алгоритм со сложностью O(1) может спокойно быть в тысячу раз медленнее алгоритма O(N!), для ваших данных. Поэтому стоит понимать, что Big O говорит только о скорости роста времени выполнения алгоритма, о самой скорости алгоритма эта нотация вообще ничего не скажет.
    В ролике это упоминается, но мне кажется это стоит подчеркнуть, так как очень часто вижу такое заблуждение.

    • @razor23Ukraine
      @razor23Ukraine Год назад +35

      Вот именно поэтому я вообще не понимаю нафиг этот Big O нужен. На моей практике чисто позадалбывать на собеседовании и всё =(

    • @eugenedukatta9355
      @eugenedukatta9355 Год назад +12

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

    • @egorolefirenko139
      @egorolefirenko139 Год назад +8

      ​@@razor23Ukraineпотому что если у алгоритма меньшая асимптотическая сложность, то для него всегда найдётся такой размер ввода, начиная с которого он начинает работать быстрее, чем алгоритм с большей сложностью

    • @whiteprincewithobsession
      @whiteprincewithobsession Год назад +9

      @@razor23Ukraine есть алгоритмы с перемножением матриц, и есть дефолтное перемножение за сложность n^3, а есть алгоритм за n^(2,37) но он начинает работать быстрее первого только при больших входных данных, так как имеет большую константу
      Для этого Big O и нужен

    • @raymondxp4709
      @raymondxp4709 Год назад +6

      Big O это не количество времени а количество итераций!
      Ты чем слушал временная сложность говорит о том сколько шагов или операций нужно совершить для завершения алгоритма.
      O(1) не зависит от входных данных хеш-таблица например чтобы найти в ней элемент неважно сколько у тебя элементов хоть миллиард он найдет его за один шаг.
      O(N!) чем больше данных тем хуже даже добавления одно элемента тот же поиск замедлит в тысячу раз.
      Здесь неважно сколько миллисекунд выполняется одна итерация ведь на разных машинах оно бедт разным он это сказал в самом начале, нам важно сколько итераций оно будет всегда одинаковым.
      Видимо ты не понял принцип Big O.

  • @monopoly_trade
    @monopoly_trade 10 месяцев назад +10

    надо будет раза 3 пересмотреть с ручкой и листочком... на 4-й минуте уже потерял нить

  • @ДанилТемежников
    @ДанилТемежников Год назад +6

    Вау, отличный видос. Разобрал очень нужную тему, которая много где важна. Я почему-то для себя представил что там все сложно и как-то избегал её, но понимал что нужно будет изучить когда-то. Оказалось всё очень просто. Ну как минимум процентов 90 я точно понял и это супер! Спасибо большое

  • @ыыааасаша
    @ыыааасаша Год назад +41

    Невероятно актуально, каждое видео очень помогает разобраться в темах, которые учу самостоятельно, потому что всё крайне наглядно и понятно, всё еще с нетерпением жду продолжение цикла по ассемблеру)

  • @web-writer4769
    @web-writer4769 Год назад +1

    круто, радует что чаще стал выходить контент на канале!

  • @alexone899
    @alexone899 Год назад +71

    За последнее время особенно много новых видео. Пожалуйста, не останавливайся !
    Жги дальше !!!🔥

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

      Просто появилась реклама. Но я нисколько не против. Реклама нужна и она полезна. Особенно такая. Так что вы правы: жги дальше.

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

      ТОЧНО!!!

  • @Flawden
    @Flawden Год назад +2

    Офигенно! Я никак не мог понять что за фигня эта ваша оценка сложности. Наконец-то допер. Спасибо!

  • @TheR1za
    @TheR1za Год назад +28

    Слышали о программистах, которые совсем на днях были уволены из Microsoft. Так вот, все они прошли курс на скиллфэктори.

    • @georgeunknown2833
      @georgeunknown2833 2 месяца назад

      🤣🤣🤣👍

    • @RNG_Manipulater
      @RNG_Manipulater 29 дней назад

      Оказывается почти все бомжи, которые живут на улице, пили чай.
      Вывод: Чай - путь к бездомной жизни

  • @watherMG
    @watherMG Год назад +2

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

  • @devbackendtube
    @devbackendtube Год назад +22

    4:51 - позволю заметить что мы считаем не то что они будут одинаковые, а то что они будут расти одинаково (по времени или памяти) при изменении количества входных данных

  • @smexyenok5736
    @smexyenok5736 Год назад +45

    Вот благодаря таким людям как ты люди не деградируют, людям интересно смотреть твои видео потомучто интересная и приятная подача информации

    • @baielsartbaev2716
      @baielsartbaev2716 Год назад +2

      А самое главное - полезная!

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

      В точку сказал

    • @heybeachMIN
      @heybeachMIN Год назад +2

      что делать если я ничего не понял из этого видео? Я деградировал уже?!

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

      ​@@heybeachMINЕсли ты школьник то это норма, а если нет то тоже, тебя просто не интересовала данная сфера.

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

      @@hardcodedreborn9650 я не школьник, но да, алгоритмы и математика меня не сильно раньше интересовала ) так что сейчас пытаюсь наверстать упущенное

  • @pashkiewich
    @pashkiewich Год назад +3

    Спасибо за видео, вдохновляет учиться

  • @fada9238
    @fada9238 Год назад +17

    Не перестаю восхищаться вашим каналом!
    Задавали нам эту О-символику в колледже не степике проходить. Ничерта не понятно было, всё объясняли скучно и непонятно где вообще применимо.
    То есть, я как бы понял зачем - чтобы оценить сложность алгоритма.
    Но там это объясняли в такой скучной форме, что слушать было невозможно! Я просто ничего не понимал...!
    А у вас - выяснилось, что тема то простая :D
    Спасибо за то, что ваш канал существует и делает такой контент!

  • @zxw
    @zxw Год назад +6

    Подача материала просто супер 😁 ждём новых роликов про криптографию!

  • @alexone899
    @alexone899 Год назад +70

    2 часа ночи, думал пойти спать.
    Так стоп, новый урок от Алека !?
    Сон подождёт.

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

      это и правильно потому что перед сном информация мозгом может и вопринимается хуже но зато запоминается лучше - повторил а ты уже оказывается это знаешь значит осталось что - правильно осталось понять и пременить

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

      Какой дурак ночью будет ложится спать ?

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

      @@jessypinkman8010 не знаю джесси, когда мет варить?

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

      @@Bigteamer Чел, ты или умолкнешь или товара не видать, в Альбукерке уже везде чекают, так что по тише

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

      @@jessypinkman8010 Понял, бро. Буду ждать товар

  • @ДанилТемежников
    @ДанилТемежников Год назад +3

    О, отличная тема. Давно уже хочу в ней разобраться. Надеюсь всё пойму. Погнал смотреть. И спасибо тебе что намного чаще видосы стали выходить!

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov Год назад +1

    Alek, благодарю! 👍🔥

  • @ПётрПетров-д2ч4х
    @ПётрПетров-д2ч4х Год назад +1

    Познавательно, спасибо!

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

    Очень приятно ваши видео смотреть!

  • @frenkefourfinger2413
    @frenkefourfinger2413 Год назад +2

    Выход твоих роликов для меня праздник , е
    Ты очень круто выдаешь материал, спасибо тебе огромное за то что ты делаешь эти ролики ... 🙃

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

    шикарно! мне очень понравилось ваше объяснение с примерами! спасибо!

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

    не думал что эти видео будут настолько полезны при сдачи сессии:) для повторения самое то!

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

    Кратко и доступно, про очень важную тему. Респектую за этот шедевр.

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

    Очень хорошее объяснение! Thank you

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

    Хорошее объяснение, спасибо!

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

    Спасибо, лайк!
    Уверен, что Ваши ролики найдут место и в учебных заведениях.

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

    Чуствуется серьезный подход к прокачке навыков презентаций)
    Замечательный интонационные паузы) не позволили мне уйти в транс! ❤

  • @Antoine_de_Saint_Exupéry
    @Antoine_de_Saint_Exupéry Год назад

    Хороший труд! Вдохновения автору!

  • @SOLOKOS
    @SOLOKOS Год назад +26

    Сложность алгоритмов может определяться несколькими способами, в зависимости от конкретных характеристик алгоритма и задачи, которую он решает. Ниже приведены несколько основных:
    1. Временная сложность: Временная сложность алгоритма относится к количеству времени, необходимому для решения задачи при увеличении размера входных данных. Алгоритмы с более высокой временной сложностью обычно считаются более сложными в решении, чем те, у которых временная сложность ниже.
    2. Пространственная сложность: Пространственная сложность алгоритма относится к объему памяти, необходимому для решения задачи при увеличении размера входных данных. Алгоритмы с более высокой пространственной сложностью могут быть более сложны в реализации или оптимизации, чем те, у которых пространственная сложность ниже.
    3. Область применения: Сложность алгоритма также может зависеть от области применения, для которой он разработан. Некоторые задачи могут иметь врожденную сложность, которую нельзя снизить с помощью алгоритмических оптимизаций.
    4. Характеристики входных данных: Характеристики входных данных могут также влиять на сложность алгоритма. Некоторые алгоритмы могут быть более сложны в реализации или оптимизации для определенных типов входных данных, таких как большие числа, разреженные данные или данные с множеством повторяющихся образцов.
    5. Детали реализации: Детали реализации алгоритма, такие как выбор структур данных или языка программирования, также могут повлиять на его сложность.
    В целом, определение сложности алгоритма может быть сложным процессом, требующим тщательного анализа и учета многих факторов.
    Big O - это математическая нотация, используемая для определения временной сложности алгоритма, то есть описания того, как быстро работает алгоритм при увеличении размера входных данных.
    Она указывает на асимптотическую верхнюю границу времени выполнения алгоритма и позволяет определить, как быстро будет расти время выполнения алгоритма при увеличении размера входных данных.
    Обычно Big O записывается в виде O(f(n)), где f(n) - функция, описывающая количество операций, которые выполняет алгоритм при обработке n элементов входных данных. Например, если алгоритм имеет временную сложность O(n), то это означает, что время выполнения алгоритма пропорционально размеру входных данных.
    Big O используется для сравнения и анализа различных алгоритмов и помогает выбирать наиболее оптимальный алгоритм для решения конкретной задачи. Она также позволяет оценить, насколько эффективно можно оптимизировать алгоритм при работе с большими объемами данных.

    • @Виктор-ъ4р7н
      @Виктор-ъ4р7н Год назад +4

      Похоже на ответ ЖПТ

    • @Виктор-ъ4р7н
      @Виктор-ъ4р7н Год назад +3

      Это 3.5 или 4 дала такой ответ?

    • @deniscozma2207
      @deniscozma2207 5 месяцев назад

      @@Виктор-ъ4р7н да это точно неиронка сгенерировала я заебался читать нафига пытатся сделать из себя умника если не понимаешь о чем идет речь непонятно.

  • @7wafer7
    @7wafer7 Год назад

    Спасибо за видео

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

    Ценный контент. Подписался.

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

    Как всегда, лучший 🔥

  • @__-pq1nt
    @__-pq1nt Год назад +9

    Вот нравится мне на этом канале то, что разбираются темы, к которым человек сам не подошёл, так как они покрыты "тайнами". Про них мало понятной информации, но автор канала каким-то образом сложные темы объясняет за 15 минут. Без подробностей, конечно, но чтобы начать разбираться это более чем достаточно. Спасибо автору за старания 😍

    • @ВладимирЛушник
      @ВладимирЛушник Год назад +1

      Нет там никакого покрытия тайной и литературы просто ГОРЫ. Если ты к теме сложности алгоритмов и оптимизации не добрался - значит ты просто "не дорос". Ну в смысле для того чтоб копать в эту сторону, перед тобой должна стоять задача очень часто выполнять объемную задачу (например поиск данных в большом массиве и не раз в месяц, а прям часто).
      В данном ролике даже не упомянули откуда растут ноги. А ноги растут из особенностей "железа". Команды процессора не одинаковые по времени выполнения. Так самые "длинные" это операции сравнения и сопутствующие им операции условного перехода. Следом идут операции записи в память. Плюс к операциям записи идёт организация структуры хранения обрабатываемых данных. В конечном итоге оптимизация сводится к тому, что нужно по возможности сделать так, чтоб было минимальное количество сравнений (если можно заменить одно сравнение тремя операциями сложения - заменяй. работать будет быстрее. тут ярким примером так называемые "хеш"). В целом дисциплина называется "структуры данных и алгоритмы".

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

      Привет, посоветуйте пожалуйста книжки с C++, мой уровень очень плох, но при этом я могу вникать в материал, просто только начинающий, хоть уже и в ВУЗе просидел полгода, но играл слишком много, а сейчас уже понимаю, что нужно заниматься, и ко второму курсу идти на работу потому что стипендии не хватает, чтобы покрывать мои "хотелки"​@@ВладимирЛушник

  • @Артёммостяев-н2ш
    @Артёммостяев-н2ш Год назад +2

    мало что понял, но было интересно

  • @backwardzzzz
    @backwardzzzz Год назад +5

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

  • @nbylnov
    @nbylnov Год назад +7

    Видео скорее больше запутывает без формальных определений. Также хотелось бы услышать про тета- и омега- нотации.
    Советую почитать соответствующую главу книги Томаса Кормена «Алгоритмы. Построение и анализ».

  • @Sergey.Ts_
    @Sergey.Ts_ Год назад +2

    Если раньше я думал, что немного знаю математику и чуток умею программировать....
    То теперь понимаю, что лучше пойти выпить пивка 😮

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

    В примере вычисления факториала на 10:00 опечатка, следует исправить '+' на '*'. А так ролик хороший, спасибо за простое и доступное изложение .

  • @андрейиванов-ж7ч
    @андрейиванов-ж7ч 3 месяца назад +62

    А вы слышали про Skypro? Я что-то похожее проходил на их курсах, когда изучал алгоритмы и программирование, классно объясняют материал, рекомендую!

  • @amegatron07
    @amegatron07 Год назад +4

    Спасибо за видео! Полезно не забывать об этой теме, хоть в лично в моей практике уже давно достаточно редко приходится "упарываться" в жесткую алгоритмику. Но вот чем мне всегда О-нотация не нравилась, так как раз своей грубостью. Часто знать о двух разных алгоритмах, что они просто O(N) (или любая другая функция) - это ничего не знать. Представьте себе абстрактную ситуацию, что выбираете алгоритм для своей задачи из магазина, и в характеристиках у обоих обозначена сложность O(N). Но один (1) из них выполняет по факту в среднем N/2 операций. А другой (2) всегда выполняет 1000*N. Хоть они оба и O(N), первый будет значительно предпочтительнее второго. Во-первых потому, что N для него - действительно максимум. Во-вторых, что в большой части случаев он будет завершаться, выполнив меньше N операций.
    Но в чем же заключается дополнительная проблема алгоритма (2), про который известно, что он O(N), но неизвестно, что фактически он всегда выполняет 1000*N операций, помимо того, что он очевидно менее оптимален, чем первый? А проблема как раз в том, что просто сравнение разных сложностей в O-нотации не совсем корректно. Вот теперь представьте, что есть еще алгоритм (3), решающий эту же задачу, но имеющий сложность O(N^2). Он же сложнее, чем O(N), так? Так, да не так. Если просто взглянуть на эти две функции: 1000*N и N^2, легко увидеть, что тот "более быстрый" алгоритм O(N) (который фактически 1000*N, но коэффициент мы пренебрежительно отбросили) будет по факту выполняться дольше, чем N^2 для N < 1000. А теперь представьте, что сама наша исходная задача и не предполагает работать с N, большими 1000. В этом случае нам было бы выгоднее взять этот третий алгоритм, если выбирать только из этих двух. А теперь представьте, что оценка этого третьего алгоритма тоже сделана слишком грубо, и по факту точнее было бы говорить об (N/10)^2 - это по-прежнему O(N^2), но сравнивая его с (2), он будет быстрее уже не только при N < 1000, а при N < 100000 (!).

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

      так эта нотация применяется для оценки при N стремящемся к бесконечности. Эсли у тебя на входе алгоритма не бесконечный размер данных, то и не применяй, не надо.

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

    Предлагаю сделать видео про деревья(в частности бинарные), балансировку деревьев и всё вот это. Как будто не так много контента на эту тему на ру ютубе, либо я ошибаюсь.

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

    Криптография 2 часть!! Мы ждем

  • @LAZIO14
    @LAZIO14 8 месяцев назад +1

    Блестательное видео. Жду видео по Java

  • @DenisB-d5f
    @DenisB-d5f Год назад +2

    0:48 - так мы смотрим на количество операций или на время выполнения?
    Видос топ, конечно, а то другие размазывают инфу.

  • @4ерно4анин
    @4ерно4анин Год назад +2

    сложность алгоритмов проходил на первом семестре программной инженерии. препод никакущий, объяснял убого и так, что ничего не понял. сейчас я во втором семаке и Алек выпустил видос по этой теме. не совсем вовремя, но тем не менее, я хоть понял то, что старался объяснить нам препод. спасибо тебе огромное, Алек

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

      у нас вообще забили на сложность алгоритмов)) а вуз носит название МЕЖДУНАРОДНЫЙ!

    • @любительоливера3
      @любительоливера3 Год назад

      тоже прохожу сейчас это в универе, можешь подсказать: сложность О(n+k), когда в программе два цикла, не вложенных, так вот, эта сложность линейная, т.е. аналогична O(n)? или я чего- то не понял

    • @4ерно4анин
      @4ерно4анин Год назад

      @@любительоливера3 вроде да, потому что все около N отбрасывается: О(2N) -> О(N), O(N+3) -> O(N). Не отбрасываются логарифмы и степени на сколько знаю. Тип может быть O(N*logN), оно так и останется , или же O(N²), тоже не изменится

    • @любительоливера3
      @любительоливера3 Год назад

      @@4ерно4анин благодарю

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

    а ещё есть проблема в реальном железе. казалось бы поиск в дереве быстрее, чем поиск в неупорядоченном массиве из 100 элементов, но за счет того, что данные хранятся последовательно в памяти и влезают в кеш процессора, то прогнать цикл может оказаться быстрее, чем в дереве.

  • @АртёмКрасов-ъ8с
    @АртёмКрасов-ъ8с 11 месяцев назад +1

    Вставлю свои пять копеек по поводу памяти. Если мы инициализируем словарь или массив размера переданного в функцию аргумента, то по памяти M = О(n) (M = memory).

  • @ОлегФилатов-м6е
    @ОлегФилатов-м6е Год назад

    Спасибо за видео

  • @SergiyAntonyuk_PhD
    @SergiyAntonyuk_PhD Год назад +3

    Тот редкий случай, когда просто, КРАТКО и понятно объяснены довольно сложные вещи.
    Спасибо автору

  • @TwoRiks
    @TwoRiks Год назад +5

    Не понимаю в программировании и математике ни черта, но автора так интересно слушать😅 очень познавательно, спасибо большое, продолжай 👍

    • @ВасяФедин-ш8щ
      @ВасяФедин-ш8щ Год назад +2

      по-любому у автора в загашнике есть информационная мега-бомба. она нам всё объяснит, и м ы решим ка жить дальше. Голос да, действительно такой

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

      Дело в том, что никто ни в чём ничего не понимает. Просто некоторые питают иллюзии, что что-то понимают, а у вас такой иллюзии нет )

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

      @@TinDIlintin это очень обнадёживает, надеюсь вы правы, спасибо 👌

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

    Классный ролик, все наглядно

  • @nami_gamedev
    @nami_gamedev Год назад +4

    Я так понимаю, что скорость выхода видео равна O(n²)?

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

    Как бы хотелось бы видео по C# или знает кто подобный канал с подобной подачей по C#?

  • @ВладСкопен
    @ВладСкопен 9 месяцев назад

    Очень круто и доступно

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

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

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

    10:38, тот момент когда ты пишешь на питоне и ты можешь умножать строку.

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

    Хорошо разъяснил

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

    Музыка топ, люблю её. Спасибо мэн!

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

    Огонь!!

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

    Спасибо, прокачиваю мозг благодаря тебе

  • @a.osethkin55
    @a.osethkin55 Год назад

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

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

    Не ну это трендец просто. Просто идеальный канал, ну не к чему придраться

  • @ВасяПупкин-б1м9з
    @ВасяПупкин-б1м9з Год назад

    0:44 O(N * log N) на графике не выглядит как логарифм, и "загибается" вверх а не вниз
    На большой дистанции линейно-логарифмическая сложность - хуже линейной, что у вас обозначено
    С графиком на первой минуте может показаться, что линейно-логарифмическая когда-то догонит линейную, но это не так - эти две функции можно считать полностью расходящимися
    Так же не полностью раскрыта тема коэффициентов, когда сложность алгоритма не получится оценить "двухмерной" асимптотикой
    Там сложность оценивается уже "пространственно"
    Я не знаю работает ли это для памяти, не сталкивался
    Но не удивлюсь если такие "пространственные" коэффициенты применимы и для памяти

  • @jekapsk
    @jekapsk Год назад +2

    Почему рассматривается только О-большое, и еще надо было упомянуть о сложности в лучшем случае, на примере отсортированного и не отсортированного массива

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

    Достаточно прогнать на эталонном компе, а сам выбор эталонного компа очевиден: тот что тебе дали на работа в качестве рабочего или целевого.

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

    Молодца!

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

    Когда я поступил в университет и на матанализе встретил "О большое", то далеко не сразу понял, что это то самое "big O" в программировании. Сфера настолько перенасытиоась дилетантами, что даже понятия искажают для тех, кто не посещал школьную маоематику с 5 класса

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

    1:48 такое ощущение, что здесь пару реплик на монтаже потеряли. А то был просто линейный перебор, ВНЕЗАПНО превратился в перебор с хитровывернутым условием и "надо работу своего алгоритма хоть немного представлять".

  • @Безназвания-ж9в
    @Безназвания-ж9в Год назад +1

    Я не понимаю, объясните пж. На 1:48 на картинке почему в условии цикла написано i*i≤121 и счетчик i++?
    Я думал, что в счетчике должно быть i*=i, а в условии просто i≤121. Тогда в таком случаем будет 11 итераций.

    • @СтасБорецкий-ъ2я
      @СтасБорецкий-ъ2я Год назад +1

      Друг, у тебя итерация с i = 1, начинается, так что твой счетчик постоянно на единице будет. Даже если с i = 2 начинать, то это не очень разумно так делать, тк внутри цикла ты допустим перебирать массив хочешь, а у тебя счетчик геометрически возрастает. Лучше сделать, как в примере и не мудрить

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

    Спасибо за видео! Доходчиво и с картинками! :D
    Кстати, сейчас друг написал, попросил функцию посмотреть (упрощенно - собирает символы по паттерну и печатает их) - показал скриншот из видео, прокомментировав, что у него по памяти получается O(N!) - делал конкатенацию строки. Друг понял и пошел оптимизировать! Скинул ему ссылку на видео)
    А что за музыка в рекламе на фоне с 2:22 / в конце видео используется?)

  • @Частник
    @Частник Год назад +1

    ПОРЖАЛ. За 10 недель без навыков вы научитесь....🤣🤣🤣

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

    Не за 11 минут а за 10 :)
    11 минус реклама.
    Гениально!

  • @antaki93
    @antaki93 Год назад +10

    Довольно поспешно и поверхностно. Лучше книжку почитать, что-то вроде "Грокаем алгоритмы" А. Бхаргава

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

      а ещё лучше учебник по дискретке, а не эту упрощённую для аутистов книжку

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

      @@kosiak10851 для базового понимания в самый раз

  • @MikhailGoncharov-tl4cr
    @MikhailGoncharov-tl4cr Год назад

    невероятно великолепны йобзор

  • @razor23Ukraine
    @razor23Ukraine Год назад +7

    Не являюсь спецом в этой теме, не смотря на то, что довольно часто слышал на собеседованиях (и больше особо нигде). Во многом потому, что, по-моему, это оценка абсолютно оторвана от реальности. Начиная от отбрасывания констант (любых!!), и заканчивая тем, что, в реальном мире, всё всегда работает в определённом диапазоне, а не растёт до бесконечности и считать как бы надо конкретно какой алгоритм будет хорошо работать на ваших данных....а не вот так вот, в вакууме.
    Знающие люди, отзовитесь, где эта нотация реально показывает свою пригодность и полезность?

    • @ВасяПупкин-б1м9з
      @ВасяПупкин-б1м9з Год назад +9

      Если у вас есть статистические метаданные по диапазонам обрабатываемых данных - то имея на руках такую "вакуумную" оценку сложности, можно из этого исходить, применяя те или иные алгоритмы
      Например, пузырковую сортировку реализовать гораздо легче быстрой, но применять её оправдано только при диапазонах до условной тысячи элементов
      После тысячи, частые обращения к такой сортировке - повышают нагрузку на систему, уменьшая её отклик
      И если вдруг оказывается, что нужно часто сортировать большие объёмы данных - то уже нужно применять другие алгоритмы сортировки, менее сложные
      А ещё, "быстрая" сортировка - далеко не самая лучшая в плане её вычислительной сложности
      Пузырьковая сортировка имеет сложность O(N^2) и это ещё оптимизированная; без оптимизации - сложность факториальная
      Вы правильно заметили, что в жизни всё работает сложнее, и иногда помимо той же сортировки, параллельно нужно сделать с данными что-то ещё
      Хотя бы та же вложенная сортировка: когда первый параметр одинаковый - нужно сортировать по второму параметру, при этом сохранить порядок следования "групп" сортировки по первому параметру
      Тогда вычислительная сложность отходит на второй план, но всё равно её важность никуда не девается
      В какой-то момент можно столкнуться с тем, что алгоритм работает очень долго, неоправданно долго, причиной этому будет как раз то, что при проектировании системы не учитывалась вычислительная сложность
      Всё это важно при проектировании отказоустойчивости и высоких нагрузок

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

      @@ВасяПупкин-б1м9з покажи мне рабочую задачу где надо реализовывать сортировку....
      я чет таких за 10 лет не видывал, везде дефолтный сорт себя прекрасно показываеТ, а на базах ордер бай.

    • @ВасяПупкин-б1м9з
      @ВасяПупкин-б1м9з Год назад

      @@karlvareze8337 в большинстве случаев этого действительно достаточно
      Но иногда бывают сложные неоднородные наборы данных, которые перед выдачей нужно сортировать
      Банальное - эти данные приходят вам в код не из базы данных, а из API, тут сортировкой из базы уже точно не получится, а у API сортировки может и не быть вовсе, или есть, но по нужному параметру - нет
      Что до сортировки "нативными" алгоритмами - они имеют свои ограничения, у вас значение по которому нужно сортировать - может находиться на втором-третьем а то и ещё большем уровне вложения в ассоциативный массив
      И вот именно в таких случаях - нужно применять те или иные, алгоритмы сортировки
      Иногда можно эти данные отправить в базу только лишь для выполнения сортировки посредством order by, но это не всегда имеет смысл, потому что уровни вложения
      P. S. Опыт работы в API большой, 7 лет

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

    Привет, в какой программе ты делаешь ролики? Как делаешь анимацию?

  • @СергейШершнев-у1б

    лайк не глядя, гению

  • @veryhard4303
    @veryhard4303 Год назад +2

    8:50 Почему 4! и 5!?

  • @GameMorg
    @GameMorg Год назад +2

    Ничего не понял, но очень интересно

  • @alexandrreimiru3349
    @alexandrreimiru3349 Год назад +5

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

  • @Atamah123
    @Atamah123 24 дня назад

    10:58
    Чат GPT сказал, что n квадрат пополам + n пополам равно n квадрат только в случае, когда n = 0 и n = 1. И все
    Так же он выразил, что n квадрат равно n
    (умножаем обе стороны на 2, избавляясь от общего знаменатлея; потом сокращаем на n квадрат обе стороны равенства)

    • @АртурЛюбимов-й1о
      @АртурЛюбимов-й1о 23 дня назад

      Пожалуйста пишите n^2, а не "n квардат"
      это читать очень сложно
      также вместо "избавляемся от общего знаменателя", прямо напишите уравнение, тоже будет интуитивно понятнее

    • @Sabiko-xg6qs
      @Sabiko-xg6qs 9 дней назад

      Вам надо спрашивать про алгоритмическую сложность, а не посчитать корни уравнения.
      Попробуйте такой промпт: "Какая алгоритмическая сложность у алгоритма который вычисляется за (N^2)/2+N/2 операций" - и увидите, что он ответит

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

    Мне одному кажется, что видосы у Алека в продакшн с ускоренным воспроизведение выходят? Инфа нужная и полезная, но на такой скорости что-то усвоить не представляется возможным)

  • @СлужуБожественнойТени

    Скоро будет почётней рекламировать скамы и наркомагазы в даркнете, чем сами знаете какие школы...😂

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

    если вы совсем не знакомы с алгоритмами, то "Грокаем алгоритмы" подходит для начала, за пару дней можно осилить

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

    Два момента на 6:30 по коду меня напрягли:
    1. Разве нет возможности взять последний элемент массива (который упорядочен) по другому? Зачем брать длину и вычитать единицу?
    2. Расчёт mid. Зачем два раза использовать left и использовать две операции "+" и "-", когда можно просто вычислить как: (left+right)/2? Поиск работает также, при этом математических операций меньше. К тому же, разве нет системной функции вычисления среднего значения или она дольше выполняется?
    P.S. Заранее извиняюсь за неточность термином, но думаю меня правильно поймут.

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

      1. Во-первых - при чём тут вообще упорядоченность? Суть в том, что переменная хранит номер последнего элемента в рассматриваемом отрезке, который может меняться во время поиска, и доступ конкретно к последнему элементу через какие-то красивые обёртки не имеет смысла.
      2. В зависимости от языка и используемой библиотеки такая функция может и будет, но какой в ней смысл, если нужно выполнить всего 2 операции.
      P.S. Скорее всего и бинарный поиск будет уже реализован в библиотеке, но суть то не в этом.

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

    🔥🔥🔥🔥🔥

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

    Когда продолжение про криптографию?

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

    В какой программе вы делаете анимации? Хочу дипломную презентацию сделать в подобном виде )

  • @bosphoruslu
    @bosphoruslu Месяц назад

    😢а есть видео где объясняется этот процесс на хомосапиенском? Для тех кто пытается въехать в тему?

  • @viktor-kolyadenko
    @viktor-kolyadenko 11 месяцев назад

    А все же, что-то в криптографии может быть такой задачей, что подобрать ключ длиной N бит существенно сложнее, чем 2^N?

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

    При нескольких переменных N и K допустим, скоростью алгоритма является максимальная скорость или худшая, поэтому если N больше K тогда скорость O(N) и наоборот

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

    очень круто

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

    Я думал что смогу понять хоть что-то, но как же я ошибался и зря математику не учил, никто не объяснил зачем она может быть нужна

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

    Не поверишь, но буквально на днях сам копался по этой теме в интернете)

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

    Как начинающий программист-гуманитарий ничего не понял из видео и стало страшно 🤕

  • @aes16bit
    @aes16bit Месяц назад

    я сейчас всплмнил язык spiral/решает задачи скорости вычислений на разных железках

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

    11:00 - совершенно не понимаю, откуда тут могла взяться сложность по памяти О(2^N) и геометрическая прогрессия. Если мы выяснили, что вызов рекурсивной функции даёт сложность О(N) по памяти, а в этом примере мы вызываем её N раз. Итоговая сложность по памяти окажется O(N).