powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тяпничная пирамида
25 сообщений из 126, страница 2 из 6
Тяпничная пирамида
    #39385812
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

По времени - согласен, но если увеличить время то Shell sort можно не дождаться и основное что измерялось это количество сравнений и количество перестановок
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39385823
ermak.nn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), а можно не использовать shellsort в сравнении, а взять какой-нибудь Introsort ?
И скажите, чем различаются qsort и qsort2?
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39385863
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermak.nnkealon(Ruslan), а можно не использовать shellsort в сравнении, а взять какой-нибудь Introsort ?
И скажите, чем различаются qsort и qsort2?
qsort логически делит массив на 2 части "<=" и ">" что приводит при большом количестве равных элементов к значительным перестановкам
qsort2 оптимизирует эту часть и сортирует на 3 участка: "<" "=" ">"
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386194
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonд0kХЯ то думал, что речь тут идет о дешевой и оптимальной сериализации .....
Да расслабся Док. Во первых из контекста понимай что тема - пятничная.
Поэтому - на расслабоне. Не блокер. Не авария. Не рабочий момент а так.

Что там по поводу сериализации? Не поверишь - вообще не думал.
Думал пока об очередях с приоритетами.

Для меня, как программера ушедшего в сисадминство и дба,
куча ( heap) асоциируется с возможностью выгрузки в своп
или возможности использования дисковго пространства ( temp space) непосредственно
в алгоритме сортировки.
Поэтому алгоритмы с возможностью сериализации на диск ,
как пятничная, академическая тема для меня предствляет интерес.

Я на все это смотрю с двух сторон, с пятнично-академически-алгоритмической и
практической-проектно-эксплуатационной.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386232
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kХmaytonпропущено...

Да расслабся Док. Во первых из контекста понимай что тема - пятничная.
Поэтому - на расслабоне. Не блокер. Не авария. Не рабочий момент а так.

Что там по поводу сериализации? Не поверишь - вообще не думал.
Думал пока об очередях с приоритетами.

Для меня, как программера ушедшего в сисадминство и дба,
куча ( heap) асоциируется с возможностью выгрузки в своп
или возможности использования дисковго пространства ( temp space) непосредственно
в алгоритме сортировки.
Поэтому алгоритмы с возможностью сериализации на диск ,
как пятничная, академическая тема для меня предствляет интерес.

Я на все это смотрю с двух сторон, с пятнично-академически-алгоритмической и
практической-проектно-эксплуатационной.

У меня есть generic external merge_sort для С++, написан самолично мною...
Интересно ? :-)
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386266
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, давай
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386313
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kХВсе украдено до нас :)

1. пространсво бьется на страницы размером попадающим в линейку кеша процессора.
2. У каждой страницы есть заголовок и трейлер.
3. В загловке лежит всякая метаинформация и ссылки на соседние страницы .
4. В трейлере массив смещений элементов данных страницы в нужной сортировке.
5. Элементы вставляются в страницу как попало , трейлер раздвигается на встречу
заполняемым элемантам данных функцией memcpy c соблюдением сортировки.
6. Существует функция паковки страницы ( для операции удаления ) смещение данных к хедеру и перестройка трейлера.
7 Существует функции сплитования и объдинения страниц с перезаписью хедеров
и трейлеров по критериям значений из метаданных в хедерах.
8. Существует справочник страниц занимающий энное количество страниц по фиксированному
смещению от базового адреса или начала файла.
9. Нигде не используется прямая адресация.

В конечном итоге получается индексный rowid-сипед из любой СУБД
на который наворачивается LRU алгоритм.
Док.

Я честно долго не знал как ответить на это сообщение. Здесь - целое техническое задание.
О чем оно? Блочная DBMS ? Возможно ты настолько лаконичен и гениален что
можешь сам по этому описанию что-то для себя прояснить или понять но мне
пока не понятна идея. Или это даже достойно отдельного топика.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386315
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)mayton,

По времени - согласен, но если увеличить время то Shell sort можно не дождаться и основное что измерялось это количество сравнений и количество перестановок
Если сравнивать heap-sort и семейство quick-sort-* алгоритмов то Шелла можно выкинуть.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386342
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonWhite OwlА зачем их друг-другу противопоставлять? Все эти структуры могут быть друг-другом одновременно. Зависит только от того как ты рассматриваешь набор данных.
Берешь ключи нод в куче - это Set. Красишь ноды - вот твоя куча и в цветное дерево превращается. (а TreeSet это и есть куча, но в некошерном ява стиле :)

Извини Сова. Но здесь я буду с тобой спорить. Пирамида и B&R-Tree это разные структуры данных.
Насколько я понимаю, способность пирамиды раскладываться в вектор по формуле - это основное
и важное свойство. Можно и обратно. Но для B&R Tree это - сомнительный трюк.Я не на этом акцент делал.
Куча (дерево с индексированными нодами в строгом порядке) может одновременно является и цветным деревом (ноды имеют дополнительный флаг цвета).
А так-то конечно, просто цветное дерево в массив отобразить может быть и невозможно вообще.

mayton1) Куча - вектор, элементы которого удовлетворяют формуле.



Назовем это "условие пирамидизации".Вот уже это неверно.
Это условие, это частный случай для бинарных пирамид, которые рассчитаны на укладывание в одномерный массив и имеют легкий алгоритм убирания корня (и замены его наиболее подходящей нодой из оставшихся) и добавления новых нод. Идеально для создания очередей, но это всего один единственный вариант пирамиды.
На самом деле, у кучи только два правила: каждая нода имеет ключ, ключ ребенка всегда меньше или равен ключа родителя. Все. У кучи нет ограничений на количество детей у ноды и нет ограничений на высоту дерева.

Из самых широко известных применений куч - индексы в СУБД. В файловых системах индексация организована тоже через кучу.

maytonНет. Merge скорее всего так не сработает. Впрочем будем посмотреть. Когда код будет.Сработает, просто пойми что очередь основанная на дереве это всего-лишь частный случай кучи. (Binary heap vs heap если возьмешься читать учебники :) )
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386482
д0кХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonд0kХВсе украдено до нас :)

1. пространсво бьется на страницы размером попадающим в линейку кеша процессора.
2. У каждой страницы есть заголовок и трейлер.
3. В загловке лежит всякая метаинформация и ссылки на соседние страницы .
4. В трейлере массив смещений элементов данных страницы в нужной сортировке.
5. Элементы вставляются в страницу как попало , трейлер раздвигается на встречу
заполняемым элемантам данных функцией memcpy c соблюдением сортировки.
6. Существует функция паковки страницы ( для операции удаления ) смещение данных к хедеру и перестройка трейлера.
7 Существует функции сплитования и объдинения страниц с перезаписью хедеров
и трейлеров по критериям значений из метаданных в хедерах.
8. Существует справочник страниц занимающий энное количество страниц по фиксированному
смещению от базового адреса или начала файла.
9. Нигде не используется прямая адресация.

В конечном итоге получается индексный rowid-сипед из любой СУБД
на который наворачивается LRU алгоритм.
Док.

Я честно долго не знал как ответить на это сообщение. Здесь - целое техническое задание.
О чем оно? Блочная DBMS ? Возможно ты настолько лаконичен и гениален что
можешь сам по этому описанию что-то для себя прояснить или понять но мне
пока не понятна идея. Или это даже достойно отдельного топика.

Да , это структура блока DBMS позволяющая создать виртуально непрырывную
rowid адресацию, не привяззаную к адресам в памяти, навернуть на нее индексный поиск
и LRU алгоритм ( буферный кеш).

Я из 90-х , в те времена каждый уважаюший себя программист
в свободное время, тогда небыло фейсбуков, вконтактов и политических срачей,
создавал нетленку , свой оконный интрефейс, СУБД или операционную систему.

.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39386578
ermak.nn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlИз самых широко известных применений куч - индексы в СУБД. В файловых системах индексация организована тоже через кучу.


Вы, скорее всего, вы немного перепутали. Насколько я знаю, там куча не применяется, там используются, например, сбалансированные деревья поиска, B+ деревья, T деревья, hash таблицы. Да и непонятно, как их использовать для поиска, ведь они не для этого делались.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39387125
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermak.nnWhite OwlИз самых широко известных применений куч - индексы в СУБД. В файловых системах индексация организована тоже через кучу.


Вы, скорее всего, вы немного перепутали. Насколько я знаю, там куча не применяется, там используются, например, сбалансированные деревья поиска, B+ деревья, T деревья, hash таблицы. Да и непонятно, как их использовать для поиска, ведь они не для этого делались.Еще один, за деревьями леса не видит.... Все перечисленные, это частные случаи кучи.
У них есть собственные особенности, но это все идеальные кучи/пирамиды.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39387230
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 чтобы далее было понятно.

Впрочем я не модерирую течение мысли в топике. И если кто-то создает новые смыслы
- то я не против. Просто прошу разделить терминологию.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39387305
ermak.nn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonWhite Owlпропущено...
Еще один, за деревьями леса не видит.... Все перечисленные, это частные случаи кучи.
У них есть собственные особенности, но это все идеальные кучи/пирамиды.
Давайте разделим терминологию. Я не просто так назвал топик "Пирамидой".

В противоположность - heap.

B инфо-технологиях данный термин я встречал минимум дважды. "Heap"-ом в Java называют
память. В DBMS Oracle под "heap" обычно подразумевают create table ... organization by heap.
Это умолчательный способ аллокации экстентов. В противоположность другой способ - как раз
B+Tree.

То о чем говорит Сова я не очень понимаю т.к. heap с точки зрения Никлауса Вирта
это структура данных которая удовлетворяет формуле которую я описал выше.

Именно об этой heap я и говорю в топике. Heap Data Structure или HDS чтобы далее было понятно.

Впрочем я не модерирую течение мысли в топике. И если кто-то создает новые смыслы
- то я не против. Просто прошу разделить терминологию.

Более понятного определения, как на wiki ( Heap ) не нашел. Может мы пользуемся разными терминами и из-за этого случилось недопонимание?
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39387355
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой первоисточник. Стр. 89. Сортировка с помощью дерева.

http://snilit.tspu.ru/uploads/files/default/virt.pdf
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39387927
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТо о чем говорит Сова я не очень понимаю т.к. heap с точки зрения Никлауса Вирта
это структура данных которая удовлетворяет формуле которую я описал выше.Увы, но со времен Вирта прошло достаточно много времени. То что он описывал на 89-ой странице, ныне считается "balanced binary heap". Это тоже-самое что и "нормальная" куча, но с ограничениями "не более двух детей на ноду" и "дерево сбалансировано".


maytonИменно об этой heap я и говорю в топике. Heap Data Structure или HDS чтобы далее было понятно.А вот как раз Heap Data Structure может иметь столько детей на ноду, сколько захочется и баланс в Heap Data Structure не обязателен.

Вирт это конечно хорошо и классика, но увы... С тех пор было написано много других учебников, и сделано много разных дополнений и обобщений. На Вирте наука не остановилась :)
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39392529
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 - . Мне кажется, это самое важное различие. Скорее всего в каких либо ОСРВ используются именно такие алгоритмы, но это только мое предположение))
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39392534
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kХДля меня, как программера ушедшего в сисадминство и дба,
куча ( heap) асоциируется с возможностью выгрузки в своп
или возможности использования дисковго пространства ( temp space) непосредственно
в алгоритме сортировки.


Вы имеете ввиду отсутствие дополнительных затрат по памяти при сортировке кучей?
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39392603
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryЧто такое скользящее максимальное?

На ходу придумал. Есть скользящее среднее. Это что-то вроде ФНЧ. Есть выборка измерений с привязкой ко времени.
И есть окно в этой выборке (например в 1 минуту) где ты меряешь арифметическое среднее.

А почему нельзя максимальное? ХЗ. Я подумал - пускай будет.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39392663
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не в тему, но про сортировку :)

Столкнулся с проблемой что сортировка сортированного достаточно долго происходит. Никогда не задумывался, а тут просто задача попалась что на входе обычно сортированный массив, но иногда ему в конец немного дописывается, поэтому надо отсортировать. Воткнул сортировку и тормоза полезли. Ради любопытства закодил Шэлла и квиксорт - не быстрее штатной.

В итоге добавил проверку на отсортированность. Проход в цикле и сравнение соседних элементов. Проверка сортированного по времени работает в 10 раз быстрее чем его сортировка.

Интересно есть ли какие-то алгоритмы сортировки заточенные на почти отсортированные массивы?
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39392732
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе в тему, но про сортировку :)

Столкнулся с проблемой что сортировка сортированного достаточно долго происходит. Никогда не задумывался, а тут просто задача попалась что на входе обычно сортированный массив, но иногда ему в конец немного дописывается, поэтому надо отсортировать. Воткнул сортировку и тормоза полезли. Ради любопытства закодил Шэлла и квиксорт - не быстрее штатной.

В итоге добавил проверку на отсортированность. Проход в цикле и сравнение соседних элементов. Проверка сортированного по времени работает в 10 раз быстрее чем его сортировка.

Интересно есть ли какие-то алгоритмы сортировки заточенные на почти отсортированные массивы?
да есть наверное, тот же HeapSort если как -то соединить с сортировкой слиянием наверное можно добиться ускорения
вопрос насколько быстро можно объединять две кучи
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39392752
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

в чём плюсы heapsort 20105057
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39393294
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)да есть наверное, тот же HeapSort если как -то соединить с сортировкой слиянием наверное можно добиться ускорения
вопрос насколько быстро можно объединять две кучи
У меня массивы, там уже нахождение O(1). В принципе при объединении сортированных можно переливать в третий, если оба сортированные, то это в один проход сделается. Потестить надо.

Но проблема первичной сортировки остается, т.к. на входе массивы извне, обычно сортированные, но не всегда.

Посмотрел табличку 20104939 ShakerSort затестил, быстро сортирует сортированное, но если несортированое попадет то O(n^2), т.е. вся экономия времени съедена.

Думаю в случаях подобных моему надо просто проверять перед сортировкой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
bool is_sort(std::string *a, size_t size) {
	if (size <= 1) return true;
	for (size_t i = 1; i < size; i++) {
		if (a[i - 1] > a[i]) {
			return false;
		}
	}
	return true;
}


В худшем случае проверка занимает 10% от времени сортировки, т.е. даже если 1 массив из 10 окажется сортированный, то проверка уже окупилась.
В среднем 5% на несортированных, тоже не большая потеря если сортированных нет.
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39393430
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
если покажешь количество основных операций как здесь 20111337 (сравнения, перестановки) то будет хотя бы понятно какие есть проблемы у метода
...
Рейтинг: 0 / 0
Тяпничная пирамида
    #39393449
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Dima T,
если покажешь количество основных операций как здесь 20111337 (сравнения, перестановки) то будет хотя бы понятно какие есть проблемы у метода
Я время меряю std::sort() и своего цикла. На сортированном массиве.
...
Рейтинг: 0 / 0
25 сообщений из 126, страница 2 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тяпничная пирамида
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]