|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.05.2011, 21:58 | #1 |
Пользователь
Регистрация: 27.12.2010
Сообщений: 82
|
Организация в хранении дынных
Добрый вечер! Прошу у опытных програмистов совета по организации хранения данных.
Короткая версия вопроса: нужно построить несколько цепочек вида 1->2->10->7; 3->5->11->20 по определенным критериям. Исходный материал: готовые дуги 1->2, 2->10, 10->7 и т.д. Они содержатся в массиве, поступают в случайном порядке, то есть сначала может поступить к обработке звно из середины цепочки, а может поступить такая дуга, которая соединит 2 имеющиеся цепочки и превратит в одну. Также цепочка может в один прекрасный момент закрыться для пополнения. То есть я не знаю ни длины цепочек, ни кол-ва, причем кол-во по ходу работы программы может постоянно меняться. В моем представлении возникает очень очень динамический объект, прошу помощи с идеями для его создания. С Delphi знаком поверхностно. Если кому интересно кратко о задаче: пытаюсь применить метод кларка райта разработанный для решения задачи коммивояжора(развести оптимальным путем грузы по пунктам) для решения задачи развозки грузов(много баз, есть доп ограничения по грузоподъемности). Уже проделаны некоторые вычисления и имеется массив дуг. Дуга это например 4->10, то есть из пункта 4 в 10. Хранится это в массиве record, где одна из записей in, другая out, обе integer. Тут все понятно и удобно. А требуется скроить цепочки дуг по следующему принципу: 1. берем дугу, смотрим можно ли присобачить к имеющимся цепочкам. прикрепить это так: к 1->2 можно приделать 2->x и x->1, остальные не подойдут. 2. Если да то а) если к одной из имеющихся цепочек, прикреплеем. б) если к 2ум то соединяем 2 существующие цепочки в одну. 3) если ни к какой, организуем как самостоятельную цепочку 4) если невозможно по каким-то причинам, то удаляем 5) если цепочка перегружена(каждый пункт это вес, а грузоподъемность машины ограничена), то оставляем ее в покое и в дальнейшем она не участвует. Проблему описал в кратком варианте. Пока плохо представляю как организовать работу с памятью. Пожарный вариант это двумерный динамический массив. очевидно, что длина цепочки не превысит кол-ва пунктов, кол-во цепочек кол-во пунктов/2. Размеры объявлю с гаком. Да и работать с массивом удобно. Но не красиво, не люблю так. Вспомнил о существовании списков. Но если память не изменяет, довольно муторно с ними работать, да и возможен ли двумерный список? Других объектов, которые могли бы мне помочь в программировании не припоминаю. Спасибо за внимание! Последний раз редактировалось 3BEPOBOY; 06.05.2011 в 22:02. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Организация цикла If ... else | 4e4en | JavaScript, Ajax | 5 | 07.11.2010 21:30 |
Вопрос о хранении картинки Timage или ресурсах | Человек_Борща | Общие вопросы Delphi | 13 | 30.10.2010 21:28 |
Организация цикла While | Ra88 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 29.09.2010 09:11 |
Организация цикла | DartDayring | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 21.03.2010 12:58 |
си, структуры, объединения, но трабл в двоично-десятичном хранении чисел | aka_Kiss | Помощь студентам | 10 | 16.11.2009 20:30 |