Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
mayton, По времени - согласен, но если увеличить время то Shell sort можно не дождаться и основное что измерялось это количество сравнений и количество перестановок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 07:26 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), а можно не использовать shellsort в сравнении, а взять какой-нибудь Introsort ? И скажите, чем различаются qsort и qsort2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 08:15 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
ermak.nnkealon(Ruslan), а можно не использовать shellsort в сравнении, а взять какой-нибудь Introsort ? И скажите, чем различаются qsort и qsort2? qsort логически делит массив на 2 части "<=" и ">" что приводит при большом количестве равных элементов к значительным перестановкам qsort2 оптимизирует эту часть и сортирует на 3 участка: "<" "=" ">" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 10:00 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
maytonд0kХЯ то думал, что речь тут идет о дешевой и оптимальной сериализации ..... Да расслабся Док. Во первых из контекста понимай что тема - пятничная. Поэтому - на расслабоне. Не блокер. Не авария. Не рабочий момент а так. Что там по поводу сериализации? Не поверишь - вообще не думал. Думал пока об очередях с приоритетами. Для меня, как программера ушедшего в сисадминство и дба, куча ( heap) асоциируется с возможностью выгрузки в своп или возможности использования дисковго пространства ( temp space) непосредственно в алгоритме сортировки. Поэтому алгоритмы с возможностью сериализации на диск , как пятничная, академическая тема для меня предствляет интерес. Я на все это смотрю с двух сторон, с пятнично-академически-алгоритмической и практической-проектно-эксплуатационной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 16:13 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
д0kХmaytonпропущено... Да расслабся Док. Во первых из контекста понимай что тема - пятничная. Поэтому - на расслабоне. Не блокер. Не авария. Не рабочий момент а так. Что там по поводу сериализации? Не поверишь - вообще не думал. Думал пока об очередях с приоритетами. Для меня, как программера ушедшего в сисадминство и дба, куча ( heap) асоциируется с возможностью выгрузки в своп или возможности использования дисковго пространства ( temp space) непосредственно в алгоритме сортировки. Поэтому алгоритмы с возможностью сериализации на диск , как пятничная, академическая тема для меня предствляет интерес. Я на все это смотрю с двух сторон, с пятнично-академически-алгоритмической и практической-проектно-эксплуатационной. У меня есть generic external merge_sort для С++, написан самолично мною... Интересно ? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 16:52 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
MasterZiv, давай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 17:24 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
д0kХВсе украдено до нас :) 1. пространсво бьется на страницы размером попадающим в линейку кеша процессора. 2. У каждой страницы есть заголовок и трейлер. 3. В загловке лежит всякая метаинформация и ссылки на соседние страницы . 4. В трейлере массив смещений элементов данных страницы в нужной сортировке. 5. Элементы вставляются в страницу как попало , трейлер раздвигается на встречу заполняемым элемантам данных функцией memcpy c соблюдением сортировки. 6. Существует функция паковки страницы ( для операции удаления ) смещение данных к хедеру и перестройка трейлера. 7 Существует функции сплитования и объдинения страниц с перезаписью хедеров и трейлеров по критериям значений из метаданных в хедерах. 8. Существует справочник страниц занимающий энное количество страниц по фиксированному смещению от базового адреса или начала файла. 9. Нигде не используется прямая адресация. В конечном итоге получается индексный rowid-сипед из любой СУБД на который наворачивается LRU алгоритм. Док. Я честно долго не знал как ответить на это сообщение. Здесь - целое техническое задание. О чем оно? Блочная DBMS ? Возможно ты настолько лаконичен и гениален что можешь сам по этому описанию что-то для себя прояснить или понять но мне пока не понятна идея. Или это даже достойно отдельного топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 18:27 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)mayton, По времени - согласен, но если увеличить время то Shell sort можно не дождаться и основное что измерялось это количество сравнений и количество перестановок Если сравнивать heap-sort и семейство quick-sort-* алгоритмов то Шелла можно выкинуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 18:29 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
maytonWhite OwlА зачем их друг-другу противопоставлять? Все эти структуры могут быть друг-другом одновременно. Зависит только от того как ты рассматриваешь набор данных. Берешь ключи нод в куче - это Set. Красишь ноды - вот твоя куча и в цветное дерево превращается. (а TreeSet это и есть куча, но в некошерном ява стиле :) Извини Сова. Но здесь я буду с тобой спорить. Пирамида и B&R-Tree это разные структуры данных. Насколько я понимаю, способность пирамиды раскладываться в вектор по формуле - это основное и важное свойство. Можно и обратно. Но для B&R Tree это - сомнительный трюк.Я не на этом акцент делал. Куча (дерево с индексированными нодами в строгом порядке) может одновременно является и цветным деревом (ноды имеют дополнительный флаг цвета). А так-то конечно, просто цветное дерево в массив отобразить может быть и невозможно вообще. mayton1) Куча - вектор, элементы которого удовлетворяют формуле. Назовем это "условие пирамидизации".Вот уже это неверно. Это условие, это частный случай для бинарных пирамид, которые рассчитаны на укладывание в одномерный массив и имеют легкий алгоритм убирания корня (и замены его наиболее подходящей нодой из оставшихся) и добавления новых нод. Идеально для создания очередей, но это всего один единственный вариант пирамиды. На самом деле, у кучи только два правила: каждая нода имеет ключ, ключ ребенка всегда меньше или равен ключа родителя. Все. У кучи нет ограничений на количество детей у ноды и нет ограничений на высоту дерева. Из самых широко известных применений куч - индексы в СУБД. В файловых системах индексация организована тоже через кучу. maytonНет. Merge скорее всего так не сработает. Впрочем будем посмотреть. Когда код будет.Сработает, просто пойми что очередь основанная на дереве это всего-лишь частный случай кучи. (Binary heap vs heap если возьмешься читать учебники :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 19:19 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
maytonд0kХВсе украдено до нас :) 1. пространсво бьется на страницы размером попадающим в линейку кеша процессора. 2. У каждой страницы есть заголовок и трейлер. 3. В загловке лежит всякая метаинформация и ссылки на соседние страницы . 4. В трейлере массив смещений элементов данных страницы в нужной сортировке. 5. Элементы вставляются в страницу как попало , трейлер раздвигается на встречу заполняемым элемантам данных функцией memcpy c соблюдением сортировки. 6. Существует функция паковки страницы ( для операции удаления ) смещение данных к хедеру и перестройка трейлера. 7 Существует функции сплитования и объдинения страниц с перезаписью хедеров и трейлеров по критериям значений из метаданных в хедерах. 8. Существует справочник страниц занимающий энное количество страниц по фиксированному смещению от базового адреса или начала файла. 9. Нигде не используется прямая адресация. В конечном итоге получается индексный rowid-сипед из любой СУБД на который наворачивается LRU алгоритм. Док. Я честно долго не знал как ответить на это сообщение. Здесь - целое техническое задание. О чем оно? Блочная DBMS ? Возможно ты настолько лаконичен и гениален что можешь сам по этому описанию что-то для себя прояснить или понять но мне пока не понятна идея. Или это даже достойно отдельного топика. Да , это структура блока DBMS позволяющая создать виртуально непрырывную rowid адресацию, не привяззаную к адресам в памяти, навернуть на нее индексный поиск и LRU алгоритм ( буферный кеш). Я из 90-х , в те времена каждый уважаюший себя программист в свободное время, тогда небыло фейсбуков, вконтактов и политических срачей, создавал нетленку , свой оконный интрефейс, СУБД или операционную систему. . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2017, 23:19 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
White OwlИз самых широко известных применений куч - индексы в СУБД. В файловых системах индексация организована тоже через кучу. Вы, скорее всего, вы немного перепутали. Насколько я знаю, там куча не применяется, там используются, например, сбалансированные деревья поиска, B+ деревья, T деревья, hash таблицы. Да и непонятно, как их использовать для поиска, ведь они не для этого делались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 07:49 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
ermak.nnWhite OwlИз самых широко известных применений куч - индексы в СУБД. В файловых системах индексация организована тоже через кучу. Вы, скорее всего, вы немного перепутали. Насколько я знаю, там куча не применяется, там используются, например, сбалансированные деревья поиска, B+ деревья, T деревья, hash таблицы. Да и непонятно, как их использовать для поиска, ведь они не для этого делались.Еще один, за деревьями леса не видит.... Все перечисленные, это частные случаи кучи. У них есть собственные особенности, но это все идеальные кучи/пирамиды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 19:17 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
White Owlermak.nnпропущено... Вы, скорее всего, вы немного перепутали. Насколько я знаю, там куча не применяется, там используются, например, сбалансированные деревья поиска, B+ деревья, T деревья, hash таблицы. Да и непонятно, как их использовать для поиска, ведь они не для этого делались.Еще один, за деревьями леса не видит.... Все перечисленные, это частные случаи кучи. У них есть собственные особенности, но это все идеальные кучи/пирамиды. Давайте разделим терминологию. Я не просто так назвал топик "Пирамидой". В противоположность - heap. B инфо-технологиях данный термин я встречал минимум дважды. "Heap"-ом в Java называют память. В DBMS Oracle под "heap" обычно подразумевают create table ... organization by heap. Это умолчательный способ аллокации экстентов. В противоположность другой способ - как раз B+Tree. То о чем говорит Сова я не очень понимаю т.к. heap с точки зрения Никлауса Вирта это структура данных которая удовлетворяет формуле которую я описал выше. Именно об этой heap я и говорю в топике. Heap Data Structure или HDS чтобы далее было понятно. Впрочем я не модерирую течение мысли в топике. И если кто-то создает новые смыслы - то я не против. Просто прошу разделить терминологию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2017, 22:43 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
maytonWhite Owlпропущено... Еще один, за деревьями леса не видит.... Все перечисленные, это частные случаи кучи. У них есть собственные особенности, но это все идеальные кучи/пирамиды. Давайте разделим терминологию. Я не просто так назвал топик "Пирамидой". В противоположность - heap. B инфо-технологиях данный термин я встречал минимум дважды. "Heap"-ом в Java называют память. В DBMS Oracle под "heap" обычно подразумевают create table ... organization by heap. Это умолчательный способ аллокации экстентов. В противоположность другой способ - как раз B+Tree. То о чем говорит Сова я не очень понимаю т.к. heap с точки зрения Никлауса Вирта это структура данных которая удовлетворяет формуле которую я описал выше. Именно об этой heap я и говорю в топике. Heap Data Structure или HDS чтобы далее было понятно. Впрочем я не модерирую течение мысли в топике. И если кто-то создает новые смыслы - то я не против. Просто прошу разделить терминологию. Более понятного определения, как на wiki ( Heap ) не нашел. Может мы пользуемся разными терминами и из-за этого случилось недопонимание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 07:25 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
Мой первоисточник. Стр. 89. Сортировка с помощью дерева. http://snilit.tspu.ru/uploads/files/default/virt.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 09:18 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
maytonТо о чем говорит Сова я не очень понимаю т.к. heap с точки зрения Никлауса Вирта это структура данных которая удовлетворяет формуле которую я описал выше.Увы, но со времен Вирта прошло достаточно много времени. То что он описывал на 89-ой странице, ныне считается "balanced binary heap". Это тоже-самое что и "нормальная" куча, но с ограничениями "не более двух детей на ноду" и "дерево сбалансировано". maytonИменно об этой heap я и говорю в топике. Heap Data Structure или HDS чтобы далее было понятно.А вот как раз Heap Data Structure может иметь столько детей на ноду, сколько захочется и баланс в Heap Data Structure не обязателен. Вирт это конечно хорошо и классика, но увы... С тех пор было написано много других учебников, и сделано много разных дополнений и обобщений. На Вирте наука не остановилась :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 19:29 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
mayton 1) Интересует где и как применяется. По моим сведениям на базе heap построены такие структуры как очереди с приоритетами (PriorityQueue). В С++/stl есть методы для превращения векторов в пирамиду (пирамидизация) и получение max/min ключа std::make_heap(..), pop_heap(..) e.t.c. Пирамидальная сортировка использует пирамиду как 1-ю фазу сортировки. (См. линк). Вобщем - поделитесь инфой кто где применял. Данная структура используется для сортировки за и для реализации priority queue. Применяется, например, в жадных алгоритмах, в задачах планирования(возможно даже в банальном tfs, но в этом я не уверен). mayton2) Интересует сравнение с Set/TreeSet/(Black&Red tree) особенно в части тех-же очередей. Скользящее максимальное. Условия тестинга. Как? Что такое скользящее максимальное? mayton3) Прочие опции . Что еще можно получить с пирамиды? Какова будет стоимость операций update ключа. Или удаления элемента с середины пирамиды? Алгоритмически - заявлены только - добавление в хвост и взятие головы (min/max). А как быть с прочими операциями search? При создании пирамиды элементы двигаются пузырьком, т.к. высота двоичной пирамиды , то и двигаться пузырек может не больше этого расстояния, потому асимптотика вставки Search? Данная структура данных, по крайней мере двоичная пирамида не предназначена для поиска, поскольку мы можем наблюдать только слабую упорядоченность - min heap или max heap. Потому поиск элемента занимает линейное время mayton4) Space Utilization . Вобщем если сравнивать с красно-черным деревом - то привлекательна экономия места. В пирамидке нет кросс-ссылок на элементы и можно всю структуру уложить в вектор. Можно, это одна из особенностей пирамиды) mayton6) Сравнение heap-sort с QuickSort (by Tony Hoare). . Чуть позже я приведу скриншот из книжки маэстро Вирта. Обсудим. Худшее время сортировки с использованием пирамиды , qsort - . Мне кажется, это самое важное различие. Скорее всего в каких либо ОСРВ используются именно такие алгоритмы, но это только мое предположение)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 21:53 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
д0kХДля меня, как программера ушедшего в сисадминство и дба, куча ( heap) асоциируется с возможностью выгрузки в своп или возможности использования дисковго пространства ( temp space) непосредственно в алгоритме сортировки. Вы имеете ввиду отсутствие дополнительных затрат по памяти при сортировке кучей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 22:02 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЧто такое скользящее максимальное? На ходу придумал. Есть скользящее среднее. Это что-то вроде ФНЧ. Есть выборка измерений с привязкой ко времени. И есть окно в этой выборке (например в 1 минуту) где ты меряешь арифметическое среднее. А почему нельзя максимальное? ХЗ. Я подумал - пускай будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 01:01 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
Не в тему, но про сортировку :) Столкнулся с проблемой что сортировка сортированного достаточно долго происходит. Никогда не задумывался, а тут просто задача попалась что на входе обычно сортированный массив, но иногда ему в конец немного дописывается, поэтому надо отсортировать. Воткнул сортировку и тормоза полезли. Ради любопытства закодил Шэлла и квиксорт - не быстрее штатной. В итоге добавил проверку на отсортированность. Проход в цикле и сравнение соседних элементов. Проверка сортированного по времени работает в 10 раз быстрее чем его сортировка. Интересно есть ли какие-то алгоритмы сортировки заточенные на почти отсортированные массивы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 08:44 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
Dima TНе в тему, но про сортировку :) Столкнулся с проблемой что сортировка сортированного достаточно долго происходит. Никогда не задумывался, а тут просто задача попалась что на входе обычно сортированный массив, но иногда ему в конец немного дописывается, поэтому надо отсортировать. Воткнул сортировку и тормоза полезли. Ради любопытства закодил Шэлла и квиксорт - не быстрее штатной. В итоге добавил проверку на отсортированность. Проход в цикле и сравнение соседних элементов. Проверка сортированного по времени работает в 10 раз быстрее чем его сортировка. Интересно есть ли какие-то алгоритмы сортировки заточенные на почти отсортированные массивы? да есть наверное, тот же HeapSort если как -то соединить с сортировкой слиянием наверное можно добиться ускорения вопрос насколько быстро можно объединять две кучи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 10:03 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)да есть наверное, тот же HeapSort если как -то соединить с сортировкой слиянием наверное можно добиться ускорения вопрос насколько быстро можно объединять две кучи У меня массивы, там уже нахождение O(1). В принципе при объединении сортированных можно переливать в третий, если оба сортированные, то это в один проход сделается. Потестить надо. Но проблема первичной сортировки остается, т.к. на входе массивы извне, обычно сортированные, но не всегда. Посмотрел табличку 20104939 ShakerSort затестил, быстро сортирует сортированное, но если несортированое попадет то O(n^2), т.е. вся экономия времени съедена. Думаю в случаях подобных моему надо просто проверять перед сортировкой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. В худшем случае проверка занимает 10% от времени сортировки, т.е. даже если 1 массив из 10 окажется сортированный, то проверка уже окупилась. В среднем 5% на несортированных, тоже не большая потеря если сортированных нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 16:55 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
Dima T, если покажешь количество основных операций как здесь 20111337 (сравнения, перестановки) то будет хотя бы понятно какие есть проблемы у метода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 19:19 |
|
||
|
Тяпничная пирамида
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Dima T, если покажешь количество основных операций как здесь 20111337 (сравнения, перестановки) то будет хотя бы понятно какие есть проблемы у метода Я время меряю std::sort() и своего цикла. На сортированном массиве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 20:20 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39392752&tid=2018242]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 190ms |

| 0 / 0 |
