Добро пожаловать в очередную из серии статей с разбором задачек, которые я задавал на собеседованиях в Google, прежде чем их запретили после утечки. С тех пор я оставил работу инженера-программиста в Google и перешёл на должность менеджера по разработке в Reddit, но у меня всё ещё осталось несколько замечательных тем. К настоящему моменту мы разобрали динамическое программирование, возведение матриц в степень и синонимичность запросов. На этот раз совершенно новый вопрос.
Читать полностью »
Рубрика «Алгоритмы» - 61
Разбор задачи с собеседования Google: поиск соотношения
2019-09-15 в 8:34, admin, рубрики: bfs, dfs, Алгоритмы, единицы измерения, Занимательные задачки, поиск в глубину, поиск в ширину, ПрограммированиеСоздаем на C++ выразительные умные указатели для удаленной памяти
2019-09-14 в 8:27, admin, рубрики: .net, c++, memory, stl, Алгоритмы, Блог компании Издательский дом «Питер», ооп, Программирование, С++, указателиПривет!
Сегодня мы публикуем перевод интересного исследования о работе с памятью и указателями в C++. Материал немного академический, но явно будет небезынтересен читателям книг Галовица и Уильямса.
Следите за рекламой!
Читать полностью »
Умные алгоритмы обработки строк в ClickHouse
2019-09-12 в 9:32, admin, рубрики: big data, c++, clickhouse, open source, Алгоритмы, Блог компании Яндекс, Серверное администрирование, строкиВ ClickHouse постоянно возникают задачи, связанные с обработкой строк. Например, поиск, вычисление свойств UTF-8 строк или что-то более экзотическое, будь то поиск типа учёта регистра или поиск по сжатым данным.
Всё началось с того, что руководитель разработки ClickHouse Лёша Миловидов o6CuFl2Q пришёл к нам на факультет компьютерных наук в НИУ ВШЭ и предложил огромное количество тем для курсовых и дипломов. Когда я увидел «Умные алгоритмы обработки строк в ClickHouse» (я, человек, который увлекается разными алгоритмами, в том числе экспериментальными), сразу же настроил планов, как сделаю самый крутой диплом. Мою радость и выражение лица можно описать следующей картинкой:
Как используется странная инструкция popcount в современных процессорах
2019-09-11 в 19:49, admin, рубрики: HAMT, popcount, Алгоритмы, анб, Компиляторы, криптоанализ, криптография, нейросети, Процессоры, сжатые структуры данных, шахматыЭто псевдорасшифровка моей презентации на !!Con 2019.
В большинстве используемых сегодня процессорных архитектур есть инструкция под названием popcount
, сокращённо от 'population count'. Она делает следующее: подсчитывает количество установленных битов в машинном слове. Например (возьмём 8-битные слова для простоты), popcount(00100110)
равно 3, а popcount(01100000)
равно 2.
Вас это может сильно удивить, как и меня, но это всё, что она делает! Кажется не очень полезным, правда?
Читать полностью »
Разбираемся в основах Blockchain: Задача Византийских Генералов. Часть 1
2019-09-11 в 14:11, admin, рубрики: algorithms, bitcoin, blockchain, cryptocurrency, Ethereum, Алгоритмы, Блог компании OTUS. Онлайн-образование, КриптовалютыПеревод статьи подготовлен специально для студентов курса «Архитектор высоких нагрузок», который стартует уже в этом месяце.
Блокчейн – это децентрализованная система, состоящая из различных субъектов, которые действуют в зависимости от своих стимулов и имеющейся у них информации.
Всякий раз, когда новая транзакция транслируется по сети, узлы могут включить эту транзакцию в копию своего леджера или проигнорировать ее. Когда большинство участников сети принимают решение о принятии определенного состояния, достигается консенсус.Читать полностью »
Треугольник Паскаля vs цепочек типа «000…-111…» в бинарных рядах и нейронных сетях
2019-09-09 в 13:23, admin, рубрики: ata analysis, big data, binary Lyndon words, binomial coefficient, Binomial Theorem, boolean, data mining, machine learning, neural network, Pascal's Triangle, rules-based, tests of randomness, Алгоритмы, анализ данных, белый шум, бинарная последовательность, биномиальный коэффициент, вероятность ошибки, ГСПЧ, кластеризация данных, марковский процесс, математика, нейрон, нейронная сеть, открытые данные, ошибки первого и второго рода, Перцептрон, поиск закономерностей, последовательность, проверка гипотезы, распределение вероятностей, синапс, слова Линдона, случайный процесс, статистика, теорема Эрдёша-Реньи, треугольник Паскаля, фрактальные свойства, экспертные системыСерия «Белый шум рисует черный квадрат»
История цикла этих публикаций начинается с того, что в книге Г.Секей «Парадоксы в теории вероятностей и математической статистике» (стр.43), было обнаружено следующее утверждение:
Рис. 1.
По анализу комментарий к первым публикациям (часть 1, часть 2) и последующими рассуждениями созрела идея представить эту теорему в более наглядном виде.
Большинству из участников сообщества знаком треугольник Паскаля, как следствие биноминального распределения вероятностей и многие сопутствующие законы. Для понимания механизма образования треугольника Паскаля развернем его детальнее, с развертыванием потоков его образования. В треугольнике Паскаля узлы формируются по соотношению 0 и 1, рисунок ниже.
Рис. 2.
Для понимания теоремы Эрдёша-Реньи составим аналогичную модель, но узлы будут формироваться из значений, в которых присутствуют наибольшие цепочки, состоящие последовательно из одинаковых значений. Кластеризации будет проводиться по следующему правилу: цепочки 01/10, к кластеру «1»; цепочки 00/11, к кластеру «2»; цепочки 000/111, к кластеру «3» и т.д. При этом разобьём пирамиду на две симметричные составляющие рисунок 3.
Рис. 3.
Первое что бросается в глаза это то, что все перемещения происходят из более низкого кластера в более высокий и наоборот быть не может. Это естественно, так как если цепочка размера j сложилась, то она уже не может исчезнуть.
Читать полностью »
Гуляем по городу с умом — 2: ходим по городу кругами с помощью генетического алгоритма
2019-09-06 в 8:13, admin, рубрики: pathfinding, Алгоритмы, генетические алгоритмы, Геоинформационные сервисы, навигация, туризмВ прошлой статье я описал алгоритм, позволяющий строить более интересные (в противовес более коротким, как делают всякие яндексы-гуглы) пешеходные маршруты между двумя точками. Алгоритм загружал достопримечательности, парки и прочие приятные и интересные для пешеходов объекты из Open Street Map и прокладывал маршрут через них. В итоге путь мог оказаться на 10-20% длиннее, но гораздо живописнее и интереснее.
Фото города — Alex 'Florstein' Fedorov
В комментариях многие написали, что кроме маршрутов между двумя точками им интересно было бы строить круговые маршруты, которые бы начинались и заканчивались в одной и той же точке и укладывались в заданный лимит времени. Например, если у вас есть два часа до поезда или до встречи с друзьями, съездить куда-то далеко вы за это время не успеете, а вот погулять и посмотреть красоты поблизости вполне можно.
После некоторого количества экспериментов я сочинил генетический алгоритм, который строит достаточно неплохие (для меня) маршруты в такой ситуации. Под катом описание принципа работы и несколько примеров.Читать полностью »
Генетические алгоритмы (или Клиент всегда король — и часто дурак)
2019-09-01 в 20:04, admin, рубрики: ERP-системы, java, Алгоритмы, генетический алгоритмПривет!
Сейчас вот сидел, делал для товарища прототип генетического алгоритма. Навеяло поделиться оным, да и некоторыми другими мыслями…
Дано (клиент заказал): в некоем царстве складе есть 100 ячеек. В нем товар лежит. Как взять количество Х так, чтобы опустошить все задействованные ячейки до конца? Ну то есть, есть у вас типа ячейки [34, 10, 32, 32, 33, 41, 44, 4, 28, 23, 22, 28, 29, 14, 28, 15, 38, 49, 30, 24, 18, 9, 15, 8, 17, 9, 2, 7, 30, 29, 29, 2, 28, 23, 19, 4, 15, 30, 38, 3, 14, 21, 43, 50, 29, 14, 17, 12, 25, 15, 23, 28, 47, 38, 29, 7, 36, 45, 25, 6, 25, 11, 10, 1, 19, 37, 24, 27, 50, 12, 1, 1, 44, 22, 48, 13, 46, 49, 11, 33, 29, 4, 19, 33, 12, 3, 47, 27, 26, 45, 40, 37, 21, 2, 8, 41, 5, 1, 9, 5] — как набрать, скажем, 40
Ну можно перебором, наверняка есть что-то умное, а можно генетическим алгоритмом это решить…
Читать полностью »
Решето Сундарама в сети представлено большим количеством источников краткой справочной информации. Тем не менее, я решил изложить то, что хотел бы прочитать сам в начале изучения теоретико-числовых алгоритмов.
Решето Сундарама входит в тройку известнейших методов генерации простых чисел. Сейчас к нему принято относиться как к некоторой экзотике по причине плохой вычислительной сложности: O(N(logN)). Однако асимптотика – асимптотикой, а на практике в 32-битном диапазоне просеивания Аткин, например, перегоняет Сундарама только при тщательной оптимизации.
Реализации решета Аткина, имеющие хождение в интернете, не превосходят решето Сундарама ни по временным характеристикам, ни по эффективности использования памяти. Так что метод Сундарама вполне можно использовать как вспомогательный инструмент при экспериментах с более продвинутыми алгоритмами.
Читать полностью »
Хеди Ламарр: изобретательница из Голливуда
2019-08-31 в 9:14, admin, рубрики: gps, wi-fi, Алгоритмы, изобретательница из Голливуда, информационная безопасность, история, личность, математика, мобильная связь, Научно-популярное, телерадиовещание, Хеди Ламарр, шифрование
Хеди Ламарр
Что общего между игрой на пианино в четыре руки, торпедами и «вай-фаем» в вашем гаджете? Ответ вы найдете в этой статье.
9 ноября 2014 года, отмечалось столетие со дня рождения голливудской звезды Хеди Ламарр. Фильмы с ее участием давно стали классикой Голливуда. Но не все знают, что она была не просто актриса. Без нее мы бы сейчас вряд ли говорили по мобильному телефону, ориентировались с помощью GPS и искали, где лучше ловится Wi-Fi. Но обо всем по порядку.
Читать полностью »