Можно долго спорить о том, нужно ли сейчас ботать алгоритмы и структуры данных. Мне кажется, что в любом случае лишним не будет.
В статье по ссылке сравниваются четыре книжки по ряду параметров: стиль изложения, как показан код, много ли математики, количество охватываемых тем и насколько глубоко эти темы рассматриваются. В конце автор приходит к двум книжкам: Introduction to Algorithms и The Algorithm Design Manual. И вот по этому случаю (да простят мне эту маленькую шалость правообладатели) лови PDF-ки к ним.
#book #algorithm #datastructure
https://porgionesanke.wordpress.com/2016/07/11/a-comparison-of-four-algorithms-textbooks/
В статье по ссылке сравниваются четыре книжки по ряду параметров: стиль изложения, как показан код, много ли математики, количество охватываемых тем и насколько глубоко эти темы рассматриваются. В конце автор приходит к двум книжкам: Introduction to Algorithms и The Algorithm Design Manual. И вот по этому случаю (да простят мне эту маленькую шалость правообладатели) лови PDF-ки к ним.
#book #algorithm #datastructure
https://porgionesanke.wordpress.com/2016/07/11/a-comparison-of-four-algorithms-textbooks/
The Poetry of Computer Science
A Comparison of Four Algorithms Textbooks
At some point, you can’t get any further with linked lists, selection sort, and voodoo Big O, and you have to go get a real algorithms textbook and learn all that horrible math, at least a little. …
Ещё от Виталика. Есть такая интересная структура данных: Merkle tree. В посте же речь пойдёт о Verkle tree. Схожая штука, но с гораздо более компактными доказательствами.
#datastructure #crypto #cs
#datastructure #crypto #cs
👍5
Хороший разбор bloom filters. Структура данных, которая даёт за константное время и маленькую память проверить, входит ли значение в множество. Но есть один нюанс: если ответ "не входит", то точно не входит. А вот если ответ "входит", то может быть и false positive. Коллизии, мать их.
#cs #datastructure
#cs #datastructure
👍5
Приятный интерактивный разбор того, как работает одна из простых версий CRDT.
#cs #network #datastructure
#cs #network #datastructure
Хочется закрыть ту серию постов про CRDT. Про сам алгоритм уже по сути не будет. Будет про то, как его прикрутить к игрушечному pixel art редактору, и как разными странными способами сэкономить на размере перегоняемых данных.
#cs #network #datastructure
#cs #network #datastructure
🔥2
Slices в Go. Обманчивы, собаки. Как и горутины, к слову. Поначалу кажется, что всё просто. Но это до первого раза, когда всё внезапно сломается. Нужно знать чуть больше про внутреннее устройство, чтобы безопасно использовать. Текущие абстракции, мать их. Пост про подводные камни в гошных динамических массивах.
#go #datastructure
#go #datastructure
Здесь уже знакомый нам автор предлагает попробовать реализовать некоторые завораживающие алгоритмы и структуры данных.
#cs #algorithm #datastructure
#cs #algorithm #datastructure
👍3
Тут какая-то странная история. Как будто челу дали обычную задачку с LeetCode, но не совсем точно передали условия, существенно повысив сложность. А чел взял, да и решил. The problem is to deep copy a linked list where each node references a random list element in addition to usual linkage, короче.
#cs #algorithm #datastructure
#cs #algorithm #datastructure
Тут в Go соптимизировали мапу, чтобы было быстрее и прикольнее. В посте сначала описывают, за счёт чего оно получилось (вкратце - Swiss Tables - нашли возможность улучшить за счёт параллельных SIMD инструкций и хитрой конструкции), а потом рассказывают, какие сложности были с реализацией этого конкретно в Go (каждая мапа - это на самом деле много мап). Интересно показывает практический подход языка - растим структуру понемногу. А ещё интересно решают проблемы с модификацией мапы во время итерации.
#go #performance #datastructure
#go #performance #datastructure
go.dev
Faster Go maps with Swiss Tables - The Go Programming Language
Go 1.24 improves map performance with a brand new map implementation
Первая часть разбора устройства persistent Clojure vector. Как так получается, что любая манипуляция создаёт новый immutable вектор, но проблем с памятью / производительностью на деле это не создаёт. Разбирается устройство базовых операций: добавить, удалить, поменять элемент по индексу.
#clojure #cs #datastructure
#clojure #cs #datastructure
👍2🔥2
И сразу вдогонку вторая часть: как на таких векторах-деревьях достаточно эффективно делать лукапы.
#clojure #cs #datastructure
#clojure #cs #datastructure
Иногда возникает необходимость сложить много статических данных в большую read-only мапу на старте приложения. Тут вот такую задачу решали на Go, чтобы получилось эффективнее обычной мапы. Но интерес на самом деле не в самой библиотеке, а в Binary Fuse Filters, на которых это строится (отдельно ещё раз хвалю Now I Get It! сервис C:).
#datastructure #go #library
#datastructure #go #library
Daniel Lemire's blog
A Fast Immutable Map in Go
Consider the following problem. You have a large set of strings, maybe millions. You need to map these strings to 8-byte integers (uint64). These integers are given to you. If you are working in Go, the standard solution is to create a map. The construction…
👍1