КАК РАБОТАЮТ ХЭШ-ТАБЛИЦЫ | СТРУКТУРЫ ДАННЫХ
Вставка
- Опубліковано 16 тра 2024
- Стань Frontend-разработчиком с нуля до PRO в SkillFactory:
go.skillfactory.ru/0ib95A
Возврат денег за курс, если не нашли работу после обучения + скидка до 60% по промокоду Alekos до 10.12.2022 г.
Регистрация на YaTalks: ya.cc/t/TMVrDVMQ3jo2mW
КАК РАБОТАЮТ ХЭШ-ТАБЛИЦЫ | СТРУКТУРЫ ДАННЫХ
Подписывайся в соц. сетях:
Телеграм - t.me/Alek_OS
ВК - alekos1
❤️ Поддержка канала:
Бусти - boosty.to/alekos
Юмани - yoomoney.ru/to/410011179144828
✔️ Полезные ссылки:
Основы программирования - • КАК РАБОТАЕТ ПАМЯТЬ КО...
Полезно знать - • ЯЗЫКИ ПРОГРАММИРОВАНИЯ...
Алгоритмы и структуры данных - • УСКОРЬ СВОЙ КОД В МИЛЛ...
Мысли Алека - • КАК ИЗУЧАТЬ ПРОГРАММИР...
00:00 Введение
01:04 Ключ-значение
01:57 РЕКЛАМА
03:19 Схема работы
04:32 Бесконечность
06:09 Коллизии
06:44 Связные списки
07:48 YaTalks
08:58 Хэш-функция
12:19 Размер массива (2^k)
13:28 Множитель (2^k) и размер массива ((2^k)-1)
15:25 Увеличение хэш-таблицы
17:53 Методы открытой адресации
Телеграм-канал: t.me/Alek_OS
Восхищён трудолюбием в изготовлении этой анимации ..
я уже месяц пытаюсь написать курсовую по хешированию и работа так тянулась , писала сама не понимая что пишу, но после твоего видео... Это лучшее видео из всех просмотренных) все поняла и вот уже написала половину курсовой и завтра еще продолжу и думаю, что допишу до конца) Спасибо за твой труд! Не представляешь как я тебе благодарна) Десятки сайтов и других видео об этой теме мало чего дали, но именно твоё видео стало толчком к осознанному написанию курсовой))) Подписалась тут же)
Жесть, вот пишешь ты код, а на деле видишь только верхушку айсберга, вместе с твоими видео можно окунуться в самую глубину и понять, что ты ничего не знаешь, как все устроено на самом деле. Спасибо тебе за твою работу, которая мотивирует продвигаться в изучении)
Это называется уровнем абстракции. Без этого ни одна программа не была бы написана, т.к. никто не может держать в голове всё. А так, ты гоняешь свои онклики, не особо парясь, чем в это время занимаются электроны в транзисторах. И не только интересно, а и полезно, иногда узнать, как это работает под капотом.
@@user-vu6hn4ul2i, да, только иногда голова от такого болит...
@@heterometrus9873 наоборот не болит, если оставаться абстрактным
@@AlexandroLavichez, я про последнее предложение
Только это не глубина, а всё ещё вершина айсберга)
Алек, большое спасибо. Благодаря тебе смог сдать вопрос преподу по теме. Ты так классно и доходчиво объясняешь! Побольше бы такого контента)
Спасибо Alek, так долго ждал эту тему.
Алек, спасибо большое за видео. Ты рассказываешь интересно то, что я долго обходила стороной
Спасибо за видео, полезная тема и подача информации как всегда на высшем уровне!
Большое спасибо, отличный разбор темы!
Большое спасибо за этот ролик в целом и объяснение, продолжайте!
Спасибо большое! Видео огонь! Как и всегда
Как раз хотел увидеть видео по этой теме, спасибо!
Спасибо большое, очень интересно объясняешь и что важно, на низком уровне абстракции, чего очень не хватает множеству других источников. Спасибо тебе за труд, ты крутой!
крайне крутой контент, спасибо большое. к сожалению или счастью я не смог найти даже аналогов такого качества. доступно, красиво, интересно. было бы крайне круто ещё послушать про деревья, красно чёрные и про set
Спасибо большое за интересное видео!!!
Мда. Сказать круто - ничего не сказать! Сам материал, сама форма подачи - высший класс! Низкий поклон за такой шедевр!
Круто, спасибо за видос!
четко изложен материал, не нужно скучную часовую лекцию смотреть чтобы понять)
черт возьми,как же я обожаю этот канал за подробности) спасибо
Это очень годно, спасибо за труды!
не удержался ещё раз прокоментирую. вот это шедевр. здоровья автору и прибыли за старания
Спасибо за видео! Было бы интересно от тебя услышать про многопоточность)
большое спасибо за все видео так держать 👍👍👍
Спасибо за ролик,хороший получился. Можно ещё видео про графы и способы их хранения
Продолжай в том же духе 🙂👍🏻
Спасибо за видео. Коммент в поддержку!
Просто супер, молодец, очень классно все разложил 👍👍👍
Крайне полезно и интересно!
классное видео, анимации вообще огонь, даже засматривался иногда, отвлекаясь от сути
Приветствую. Отличное высказывание - Знание должны быть достойные и доступные!
Первый. Красава,ты лучший братишка спасибо тебе,любим тебя друже
Отличная подача, красиво, ёмко, доходчево, подписка продана 🙃
Крайне полезное видео. Спасибо
единственный и неповторимый канал!
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
extremecode🐤
Класс, как раз делаю практическую работу по структурам данных
Надо по федеральным каналам такое крутить
Спасибо за ролик!
Очень крутой видос
Лайк, как всегда. Для совсем начинающих из целевой аудитории ролика подойдёт книга П. Луридас. "Алгоритмы для начинающих. Теория и практика для разработчика.". В главе "Гардероб, коллизия и слот" всё разложено по полочкам.
Привет,очень хорошие видосы у тебя,если можно давай про многопоточность.думаю многим будет интересно.
Подписался. Это просто нечто а не уроки.
"Написание кода, который не будет использован где-то в продакшене, считается бессмысленной тратой времени." Тестировщики и аналитики в этот момент напряглись, я думаю)
Первый раз оставляю комментарий под видео. Вспоминаю своего препода, который сам не понимал, как это работает, так статью из matenit нормально не мог прочитать. Но после твоих видео появляется желание открыть IDE и начать: перепивать код, добавить новое алгоритмы, поломать его и тем самым разобраться ещё практически. Это не программирование - это искусство. Браво, маэстро! :)
Круто!
спасибо, в очередной раз помог с лабой.
лайк в поддержку канала!
Очень полезный ролик, помог мне разобраться в хештаблицах! Но только в момент, когда ты рассказывал про то, что размеры массива нельзя брать числа представляемые 2^k - 1, я не мог понять, почему, и вот только после того как ты рассказал про то, что сам хеш мы будем рассчитывать, умножая на число вида 2^k - 1, тогда уже стало понятно. Надо бы поменять местами эти две части видео
Смотрел этот канал раньше из-за крутой подачи. Когда поступил на программного инженера, этот канал стал для меня спасением. Спасибо, Алек ❤️
Вот бы преподы в вузе так же материал разбирали ;(
Я наконец смог осознать, как это работает. Спасибо тебе огромное
лайк за объяснение, хорошо и понятно объяснил тему которую многие не сразу понимают.
дизлайк за рекламу платформы, что не то что не помогает в получении профессии, а напротив мешает.
Мне очень нравится твой канал и контент
Ты лучший (из тех что я знаю) в своём роде
p.s. Откуда такой классный шрифт? Сам рисовал?
спасибо!
Как вовремя, как раз в вузе проходим)
как не вовремя, уже прошли((
вопрос: откуда взято, что при модуле 2^k -1 при делении строки(я так понимаю набор char-ов cклеенных) на такой модуль, получится то же, что и при любой перестановке char-ов и повторении операции с ней аналогично?
Меня просто интересует какой-то учебник или материалы, где подобные глубокие штуки выводятся.
Не уверен даже, есть ли это в Кормене или в Кнуте.
32-битный int имеет 1
вообще круто объяснил хотелось более длинные видео с более подробными объяснениями
1:44 перепутал местами HT.get и HT.delete но все равно спасибо за такое тщательно проработанное объяснение
Не сказал бы, что я узнаю что-то реально новое из твоих видосов, но то, что они упорядочивают имеющиеся данные в башке - факт. Спасибо :)
круто, однако!
Алек, спасибо за информативный контент! Помнится, ты говорил в одном из роликов, что устроишь голосование в телеге на тему создания подробного, но платного, обучающего курса. Скажи ещё жива эта идея?
Комментарий в поддержку автора
От 0 до (2^32)-1 в инт может поместится значений. Если мы говорим что хэш 32бита то на все равно положительное там число или отрицательные, мы все равно будем его использовать поэтому для наглядности чтения его записывают как unsigned int.
Или я что то не понял?
Ля! Я б даже проданатил бы тему от Тебя. Хочу услышать про многопоточность в твоей интерпретации
Очередное прекрасное видео про доступные знания, спасибо тебе Алек! За свой опыт (C,C#,Python,Js) не разу не притрагивался к хеш-таблицам только с открытым ртом смотрел как работает sha256 и думал о том какой вообще должна быть хеш-функция чтобы исключить коллизии потом понял что буду говорить что это невозможно пока кто нибудь не сделает такую реализацию наверно это уже и не будут называть страшным словом хеш-функция. Так вот я думаю что скорее всего этим типом хранения данных я займусь в следующим году)))
*Осталось совсем немного*
@@nakidai да))))
this is such a relevant video
Доброго дня! на какой структуре данных лучше всего реализовать хэш таблицу (ключ-значение) для миллиарда записей. нужно делать извлечение,вставку,удаление,изменение. удаление,изменение,вставка не должны снижать скорость извлечения ?
Смотрю и думаю: это ж сколько программисты в прошлом морочились, чтобы такое сделать, а сейчас можно за 5 секунд написать вызов нужного метода и не запариваться
Столкнулся тут с оптимальным поиском, почитывая какую-то книгу… была приведена ссылка на статью о том, что оптимальный поиск задан как суперпозиция поиска в глубину и ширину с разными весами, и веса подобраны в статье эмпирически. Поистине нет предела совершенству, некорректных мат задач тьма тьмущая, и огромная зияющая дыра в развитии методов их решений. Чем дальше заходим с развитием выч техники, тем больше проблем для решения)
Интересно, что же будет, если запросить у хэш-таблицы значение по ключу, которого нет, но хэш которого совпадает тем ключом, которой есть в таблице? Ведь не каждый же элемент хэш-таблицы есть связный список?
какое умное видео, действительно а зачем вообще говорить о том что всё решает увеличение размера хеша
Не понял, а почему хеш с множителем 2^k по модулю (2^k) - 1независимо от перестановки букв в слову dog выдаёт индекс 4?
1:32 Как минимум в Python не все типы данных могут быть ключами, потому что у неизменяемых типов метод __hash__ не переопределён
Помогите пожалуйста! Что значит "все перестановки одной и той же строки ключа ... "? 13:56
Я вот очень долго думал над тем, зачем вообще придумали хэш таблицы, если по сути можно в разы проще реализовать через бинарное дерево, где значением будет выступать пара из ключа и значения. Но рассматривая снова хэш-таблицу в ролике, я вдруг понимаю, что так можно сделать не только через дерево, но и списком, массивом, динамическим массивом, просто именно реализация в виде хэширования с массивом позволяет обращаться к индексам за чуть не ли за константное время, к тому же по идее должно намного меньше занимать места. Но, вариант с деревом мне так же очень нравится, потому что получаешь вдобавок отсортированность и быстрый поиск(хотя, с хэшированием тоже поиск быстрый, просто хэшируешь искомый ключ, и если он попадается в индексе, то значит нашел).
Интересно, но пока очень сложно)
Две рекламы в ролике бесят, остальное - отлично. Только говори помедленнее, а то тяжеловато понять тему
Поддерживаю. Рекламы - больше, материал - сумбурнее. Надеюсь, не тенденция. Канал в общем нравится. Много не попсовой информации.
Если на смартфоне с Android, то ставь UA-cam Revanced. Если на ПК, то расширение SponsorBlock.
Да, я советую это прямо в комментариях к видео, в котором реклама. Потому что первые видео (хотя бы) выглядели как честная попытка популяризации темы, был виден перевес ценности содержимого над всем остальным. Сейчас же качество видео упало до среднестатистического, если не ниже. Такое ощущение, что первичная цель выпуска роликов поменялась. Раньше на первом месте была информация, сейчас же - просто сам факт выпуска видео, потому что в него можно вставить рекламу. Подача информации путаная, местами видны пробелы в повествовании, как будто из книги вырвали страницу. Фоновая музыка стала громче, что затрудняет понимание и без того заниженного по сравнению с первыми роликами качества информации.
Немогли бы вы уточнить про веб разработчиков?
После первого просмотра осталось очень много открытых вопросов, но закрывать их не вижу смысла, так как я на своем пути пока не сталкивался с необходимостью понимать внутреннее устройство. Может быть изза того что я новичок. Хз
В конце (выбор хэш-функции), надо полагать, имелось в виду не "создание объекта В хэш-таблице", а "создание объекта хэш-таблицы". И еще мне не совсем понятно, при чем тут "взлом". Специально выбирать данные для максимизации числа коллизий - это достаточно странное занятие. Не уверен, что в реальной жизни можно с этим столкнуться, учитывая, если только вместо произвольных данных для вставки не выбирать одинаковые, приводящие к коллизиям.
Самое крутое в этой рекламе это «индивидуальный проект» у всех одинаковый 😅
Очень интересно, но ко 2/3 видео немного уже сложновато становится)
5:04 Если у тебя бит уходит под знак, то так и надо писать от -2^31, а не от нуля
Я не понял! Зачем ТГ канал если про видос мы узнаем из ютуба? Не надо так!
ps За видос мега-лайк! Оч круто! Пожалуйста не пропадай!
Ролик хорош, но 2 рекламы за одно видео это перебор
Не очень понял как работает случай , когда у нас место в массиве заканчивается. Может кто нибудь пояснить? И rehash
Разве нельзя проблему коллизии свести к приемлемому минимуму путём добавления соли к ключу, который в свою очередь сам есть строка фиксированной длины? Или путём получения индекса пересечением двух или даже более хэшей одного ключа?
чего я в хешировании не понимаю, так это как именно ускоряется доступ к данным без необходимости прохода по всем данным. Когда работал с размерами в 2-4 Гб файлов то моя программа делал все вычисления за 5 часов, а использование хеширования свело работу к
так что такое хэш-таблица в итоге? для чего они нужны?
Почему нельзя ключ хранить также в массиве?
Больше рекламы пожалуйста, ато маловато пролистывать, всего то пол видосика.
какой-то винегрет из информации которая пролетела перед глазами на первой космической
Очень интересно, жаль я ничего не понял)
Привет , анимация не перекроет то, что всё скомкано. Человек , который первый раз знакомиться с этой темой, просто н проймет. Может стоит останавливаться на некоторых моментах. Не раскидывать код по разным частям экрана. Может вместо c#(это вроде он?) стоит использовать псевдокод?
Так это и есть псевдокод
Автор, вы сами говорите, что необходимы базовые знания в математике для программирования и тут же рекламируете чудодейственные сжатые курсы, где ни материал нормально не подан (обратная связь фактически отсутствует, а раз нельзя задать уточняющие вопросы в реальном сремени - эффективность обваливается) ни практические задания не дают закрепить знания. Нормально материал подать, с шансом на реальное понимание - это в университете, исключительно на очном отделении, когда с преподавателем можно вживую обсудить а не печатать запрос и ждать, пока ответят. Даже в универе не всегда выходит научиться. А тут сжатые курсы. Я знаю человека, который у них начал обучение и собеседовал такого выпускника. Вы абсолютно правы - без базовых знаний математики и теории обработки и хранения данных (то, что на первых курсах не по одному семестру проходится) - ловить нечего. От этих курсов выигрывает только организатор. Ни знаний, ни навыков по их добыче (а этому университет и учит) люди не получают. "Говнокод" который пишут "программисты" после подобной экспресс подготовки не позволяет им работать в команде. Что дальше делать такому "программисту" после выпуска, вы бы лично его на работу взяли, будь вы lead или PM?
Разве кто-то ведётся по ссылке рекламы? Программирование почти не требует физических навыков. Это значит, что лишь цифровая информация понадобится для обучения. Раз в интернете можно найти всё разрешённое и не, то почему бы не сыскать готовые материалы по нужной тематике? Новичкам зачастую нужны дороги изучения, чтобы не блуждать и изучить только необходимое для работы. Насколько известно, ИНФОЦЫГАНЕ используют синдром упущенной выгоды. Да вообще, что за тренд создавать курсы в пространстве СНГ? напишу для целеустремлённых. Курсы всегда раскрывают план или силлабус бесплатно. вот и вам темы, по которой становятся профи. Да, сертификат не получишь, но это неважно. Лучше ходить корочкой, чем сертификатами от инфоцыгане. Знающий программист не останется безработным. Стартапы в помощь.
Тут стоит также понимать, что изготовление подобного видео с такого качества анимацией - большой труд, поэтому должен оплачиваться, а как вы понимаете когда просмотров ещё не так много, рекламодателей выбирать не приходиться.
Таким образом автор дал тебе подсказку, что идти туда не надо) Все пробелы в знаниях математике можно закрыть в ходе самостоятельного обучения. Не нужно знать весь матан)))
Во-первых прошел ли ты сам эти курсы чтобы так рассказывать о них, во вторых - это реклама, в третьих реклама ресурса легального он не обманывает и все такое, а значит она правоверная и в четвертых любая работа должна оплачиваться
@@xmahz 1. Я собеседовал человека после них. И лично знаю того, кто на них учится. Пробовать что-то тухлое, чтобы узнать его вкус не обязательно 2. Есть разница, что рекламировать, именно о этом и моё сообщение. 3. При чем тут обман или что-то нелегальное? Я про это и не писал, остальное - ваши домыслы. 4. Должна. И что?
Спасибо! Пойду тик-токи снимать
Массив Tuple ? 2 массива string ? Двумерный массив?
Меиод поиска
И всё. Смысл этого? Скорость. Ладно. Я
Контент интересный, спасибки Алекс. Как обычно информативно и без лишнего.
Зачем работать над коллизиями таблицы, если можно изменить функцию хэширования так, что бы банально не выходило два индекса, типо делить, брать модуль и домножать пока не получится уникальный индекс?
никто не использует int для длины массива) Зачем упоминать про знак, если всегда есть uint?
Я уже третий месяц учусь в SkillFactory и должен сказать что обучение у них такое себе. 5 баллов из 10 (имхо)
Видео классное!! Но ничего не понятно... Все как то очень быстро и иногда не хватает объяснений некоторых вещей
Миф про то, что не нужно знать ничего за пределами своих прямых обязанностей порождён теми, кто заинтересован, чтобы программисты пахали, никуда не стремились и умерли на работе. Современный программист -- почти полный аналог фабричного рабочего 19го века.