Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2011, 21:58   #1
3BEPOBOY
Пользователь
 
Регистрация: 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.
3BEPOBOY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация цикла 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