#0
by mikha-nix
Привет! Я пишу небольшую програмульку для работы со множествами. У меня вот какой вопрос - каким способом моно запрограммировать операцию объединения? Я помню тока как это выразить через пересечение и дополнение... Потом, вот если у меня целая куча множеств - то как мне оптимизировать операцию объединения(ну чтоб считалось это дело как моно быстрее)?
#3
by NS
Если множество через ТЗ с значениями - тогда обыкновенная операция слития ТЗ, Затем свернуть. Или у тебя Битовое представление? Тогда объединение OR, пересечение AND.
#5
by mikha-nix
язык у меня Паскаль. Структура множеств - ну пускай просто числа(целые). Всякие документированые функции использовать нельзя, так как это одно из условий задания. Все траблы именно при работе с большими массивами множеств. Поэтому я и хочу узнать как ускорять процессы парсинга?
#6
by mikha-nix
К 1С это тоже кстати применимо... веть структура информационных сущностей - это то же множество.
#8
by evGenius
Ну насколько я понимаю, проблема в поиске дублей. Можно сперва все объединить в одно множество, потом его отсортировать (например сортировкой Хоара) и дубли будут найдены автоматически (соседние равные элементы).
#9
by evGenius
Или можно отсортировать только одно из множеств, а потом юзать продвинутый поиск в нем каждого элемента из другого множества. Хотя, по-моему, получится то же самое.
#10
by mikha-nix
Дык проблема то как раз в объединении множеств. Ну то есть я определяю пересечение, а потом добавляю в массив дополнения каждого из множеств - это есть объединение. А вот как мне ускорить то (затачить) алгоритм под очень большие массивы?
#12
by NS
Ты множества сделал на массивах? Для больших множеств - быстрее будет работать на ТЗ. Из-за наличия методов заполнить и свернуть. Под массивы - сымый быстрый способ - тупо объединить, отсортировать, и слить исключая одинаковые (в отсортированном они идут подряд) значения.
#14
by mikha-nix
Блин да так и сделал... Как ускорить то процесс? Блин с фундаментальной точки зрения...
#15
by NS
(+12) Колбасит меня - каждый из массивов отсортировать по отдельности, а потом слить. Set поддерживает до 256 значений. Но есно нормально множество делается битовым, Если целые числа - тем более. Делаем массив целых чисел, и для Объединения в Цикле OR, для пересечения в цикле AND.
#16
by mikha-nix
Функции слияния и прочии - это уже готовые шаблоны.. надо свой способ оптимизации парсерных структур...Потом еще и доказывать почему так а не иначе работает быстрее.
#17
by evGenius
Что значит готовые шаблоны? Ты ж их сам реализуешь, разумеется по готовому алгоритму. Ты по-своему лучше не сделаешь. В сортировке уже очень давно все велосипеды изобретены.
#18
by mikha-nix
Ну незнаю... У меня и задача собственно придумать парсинг-алгоритм. Показать его эффективность в сравнении с другими. Спасибо.
#19
by NS
Еще раз - быстрее, чем битовое представление множеств - еще ничего не придумано, но хависит от того, что являектся элементами множеств. Если число от 1 до 1000000, а мощность множеств порядка 1000, то конечно сортировка и слияние. Либо хранение в индексированной (отсортированной) структуре.
#20
by evGenius
А если игрушку рискнуть запустить какую-нить или там тест какой-нить. Емулю выруби конечно.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как обратиться к рисунку на листе рабочей книги Excel из 1С?
- Как увеличить производительность 1С
- Несколько номеров в одном документе
- Чем отчет отличается от обработки?
- Как удалить записи регистров сведений и бухгалтерии?
- При записи операции методом записать() проводки не появляются
- ТиС R907 Update 939 НДС в номенклатуре, счета-фактуры, реализация и.т.д с 1
- Как программно получить состав документов журнала
- какой метод в VBA для отображения надписи в ячейке excel вертикально?
- как быстро перенести Операцию из одной 1с в другую
- Как отловить "ПОСЛЕ установки пометки удаления" в форме списка справочника?
- как заполнить табличный документ на форме из другого табличного документа
- Перенос данных Бухгалтерия 7.7 -> Бухгалтерия Предприятия 8.0
- генератор паролей к 1С
- CipherLab 8801 ... как заставить работать ?
- Как в табличном документе программно изменить цвет заливки ячейки?
- ЗуП - перерасчет, больничный задним числом, оно вообще работает ?
- 1Cv8 УПП Как произвести первоначальное заполнение?
- Доверенность в отгрузке без изменения типовой
- Как у числа -12.45 убрать знак минус?