Vladislav
Я книги по алгоритмам воспринимаю исключительно как справочники.
CLRS особенна тем, что в ней больше упор на методики построения алгоритмов, а не на конкретные алгоритмы
Matway
Таки да. Не факт, правда, что это хорошо.
Vladislav
у нас даже js-макак так интервьюируют, можем чебе позволить)
Vladislav
достаточно, чтобы эти знания были критическими для моей работы
Matway
Зависит от области. Я работаю на двух работах на одинаковой должности. На одной алгоритмы не нужны никогда, на другой - каждый второй день.
Vladislav
достаточно, чтобы эти знания были критическими для моей работы
разумеется, это так далеко не в любом проекте и роли
Berkus
общее понимание надо иметь всё равно
Berkus
хотя бы отличия в space и time complexity
Vladislav
ну вот ты умеешь объяснять, как и почему вставка в вектор - именно такая по времени, как она есть?
RattenKong 🦧🐀🦍️
Знать историю алгоррттмов
Vladislav
вот CLRS дает инструменты, чтобы такое понимание было, и как аналогические вещи в других алгоритмах понимать
Andrei
А average-case quicksort-а?
Крылатый
ну вот ты умеешь объяснять, как и почему вставка в вектор - именно такая по времени, как она есть?
Если не изменяент память, вся ссуть в реаллоке и переприсваивании со смещением, верно?
RattenKong 🦧🐀🦍️
Мне не нравится наличие значения плохо
Andrei
Срсли? Там весьма нетривиальное доказательство.
RattenKong 🦧🐀🦍️
чтобы знать когда остановиться)
Vladislav
ответа на SO хватит на понимание одного конкретного примера (вектор), а не общего принципа
Vladislav
дискуссия интересная, но я спать - 2 часа ночи(
Constantine
Срсли? Там весьма нетривиальное доказательство.
Совершенно очевидно, что средняя высота дерева логарифм
Vladislav
чтобы уметь в голове прикинуть время работы аналогичного алгоритма
RattenKong 🦧🐀🦍️
Так можно луучше понять что автор прав в оценке
Berkus
у кнута неплохая
Vladislav
кодерам - вообще не надо, в отличии от инженеров
Andrei
Совершенно очевидно, что средняя высота дерева логарифм
Это во-первых не очевидно, и скорее всего неправда, а во-вторых, будь это даже так где доказательство что квиксорт именно так поступает?
Vladislav
программирование вообще не особо нужно многим
🐙 Antony
Вот тебя я и ждал. Расскажи
https://yandex.ru/search/?text=виртуальные%20функции%20с%2B%2B
RattenKong 🦧🐀🦍️
Просто нужно понимать специфику задачт
RattenKong 🦧🐀🦍️
Вот кормена почитать, напримернапример
Vladislav
я лично - против такого широкого термина "программист". Только путаницу вносит
Constantine
Это во-первых не очевидно, и скорее всего неправда, а во-вторых, будь это даже так где доказательство что квиксорт именно так поступает?
Квиксорт очевидно строит случайное дерево, а случайно дерево очевидно имеет логарифмическую высоту хотя бы по форме чисел каталана
Vladislav
да уже есть, де-факто
Vladislav
просто пока все по-своему эти категории называют
Andrei
Квиксорт очевидно строит случайное дерево, а случайно дерево очевидно имеет логарифмическую высоту хотя бы по форме чисел каталана
логарифмическая высота у бинарных деревьев только если они сбалансированны, куда вероятнее построить несбалансированное дерево. Так что случайно построенное бинарное дерево вовсе не факт что имеет логарифмическую высоту.
Andrei
Скорее всего даже наоборот. Чтобы аккуратно ответить на этот вопрос, надо посчитать матожидание выосты бинарного дерева.
Andrei
Сильно сомневаюсь, что это будет функция от log(n)
Andrei
таки имеет, как раз в Кормене разбирается, кажется
Допускаю, но это надо очень аккуратно показать, и честно посчитать.
Vladislav
https://en.wikipedia.org/wiki/Random_binary_tree#The_longest_path
Constantine
Хотя с числами каталана я нагнал, видимо. Это другое распределение жи
Andrei
Емнип Каталан — это проивзольные деревья, не только бинарные.
Vladislav
https://en.wikipedia.org/wiki/Random_binary_tree#The_longest_path
это не про uniform distribution на бинарных деревьях, правда, но в qsort'е должно получаться именно такое же распределение
Andrei
(()()())
Andrei
отвечает вершине с тремя потомками
Constantine
Короче с деревьями никаких подводных камней никогда
Constantine
Как не генерь рандомом логарифм высоты)
Kyrylo
всем привет, пытаюсь портировать прогу с мака на линукс, не совсем корректно работает, есть подозрения в этой штуке: template< class T > T& getData( T* ) { return *(T*)(&m_data); }, пробовал через reinterpret_cast, не помогло. как еще можно это преобразовать?
Andrei
именно бинарные
Каталан бинарные с точностью до изоморфизма. Так что там гораздо меньше деревьев большой высоты.
RattenKong 🦧🐀🦍️
Как не генерь рандомом логарифм высоты)
Возрастабщая последовательность?)
RattenKong 🦧🐀🦍️
Ноэто маловероятно на случайных
Andrei
это не про uniform distribution на бинарных деревьях, правда, но в qsort'е должно получаться именно такое же распределение
Я бы предложил заглянуть в самого же Кормена чтобы посмотреть ка ктам оценивается сложность квиксорта (если там вообще есть)
Andrei
Там правда не всё так просто.
Constantine
Возрастабщая последовательность?)
Ну если я буду пихать случайную возрастающую последовательность, то да xD
Andrei
Вы не можете гарантировать что случайный выбор на каждом подотрезке pivot-а в среднем действительно даёт нужную сложность. Все доказательства которые мне известны привлекают немного из теорвера.
Kyrylo
в ран-тайме, тесты не так проходят
Kyrylo
пробовал на разных gcc & clang, результат одинаковый
Berkus
Что именноты пытаешься сделать и как тестируешь
Kyrylo
оптимизация -O0, можно попробовать отдельно просмотреть, просто контекст достаточно большой( в gdb просматриваю, есть негативные значения, которых быть не должно, подозрение на плохое кастование пока попробую действительно отдельные части прогнать, сложно все нюансы вам вытащить, чтобы понятнее было)
Berkus
Ну вообще это должен быть реинтерпрет каст если ты эту область памяти пытаешься считать другим типом
Berkus
https://github.com/berkus/libarsenal/blob/work/include/arsenal/byte_array.h я сделал возврат пойнтера который потом можно дерефнуть если надо см. as()
Kyrylo
ок, спасибо
Berkus
Валгринд не нужен, есть asan
Evgenii
Валгринд не нужен, есть asan
у меня была ситуация когда валгринд не ловил
Evgenii
Валгринд не нужен, есть asan
но согласен, asan сначала лучше
🐙 Antony
+1. valgrind хуже ловит, чем asan
Berkus
Tsan, ubsan
🐙 Antony
см все санитайзеры :) Они все хороши
Berkus
С этими разберись сначала
Evgenii
+1. valgrind хуже ловит, чем asan
но было и обратное
🐙 Antony
но было и обратное
Давно? Я перу месяцев назад наталкивался на то, что валгринд не ловил. Версии санийтазеров и валгринда были сеженькие