![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Состряпал реализацию map<string, int> на скорую руку на Си, не без помощи ИИ. Грок неленивый программист, если ему прямо говорить что делать.
Заодно узнал, что AVL деревья представляют собой наследие советской науки. Изобретены в 1962 году Адельсон-Вельским и Ландисом, на десять лет раньше красно-чёрных деревьев.
Георгий Максимович Адельсон-Вельский стоял у истоков шахматной программы Каисса. В 1992 году эмигрировал в Израиль.
Евгений Михайлович Ландис родом из Харькова. В 1968 году подписал нашумевшее письмо в защиту А. С. Есенина-Вольпина.
- Интерфейс: string_map.h
- Реализация: avlmap.c
- Тесты: avlmap_test.cpp
Заодно узнал, что AVL деревья представляют собой наследие советской науки. Изобретены в 1962 году Адельсон-Вельским и Ландисом, на десять лет раньше красно-чёрных деревьев.
Георгий Максимович Адельсон-Вельский стоял у истоков шахматной программы Каисса. В 1992 году эмигрировал в Израиль.
Евгений Михайлович Ландис родом из Харькова. В 1968 году подписал нашумевшее письмо в защиту А. С. Есенина-Вольпина.
no subject
Date: 2025-05-19 22:33 (UTC)no subject
Date: 2025-05-19 22:45 (UTC)no subject
Date: 2025-05-19 22:47 (UTC)no subject
Date: 2025-05-19 22:48 (UTC)no subject
Date: 2025-05-19 23:13 (UTC)Побочные ответы: потому, что реализация сбалансированных деревьев занимает безумное количество кода по сравнению с реализацией хэша, и потому, что удалять элементы из контейнера при закрытии scope тривиально, в отличие от дерева.
no subject
Date: 2025-05-19 23:26 (UTC)Вот тут товарищ тестировал hash map против AVL, к примеру: https://medium.com/@ugurdilber1/hash-tables-vs-binary-search-trees-the-ultimate-search-battle-74e20a92c206
Когда парсер заработает, можно будет устроить бенчмарк. Подменить реализацию словаря с ALV tree на hash map и прогнать исходники ядра Юникса. Сравнить объём памяти и количество strcmp супротив вычислений хэша. Узнаем что-то новое.
no subject
Date: 2025-05-19 23:32 (UTC)Я добавил отдельный метод, который удаляет узлы по заданному критерию. В компиляторе переделаю на проверку уровня scope:
https://github.com/sergev/vak-opensource/blob/master/languages/c-language/map/avlmap.c#L296