Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Расчет численности избирателей на избирательных участках. Access2003
 
 автор: AleksKN   (06.02.2011 в 18:18)   личное сообщение
 
 

Расчет численности избирателей на избирательных участках.
Имеется таблица со следующими полями:
Дом, Численность, СоседнийДом_1, СоседнийДом_2 и т.д. до СоседнийДом_8
Таблица содержит 100 тыс. записей (100 тысяч домов) с численностью от 1 (частный дом) до 1000 (многоквартирный дом) человек. Каждый дом имеет соседний (к примеру, берется дом в прямой видимости), соседних домов может быть от одного до восьми. Все соседние дома перечисляются в поле Дом, имеют количество жильцов и перечисление своих соседей.
Задача стоит следующая: Для формирования избирательных участков необходимо отобрать группу домов с общей численностью в 2500 человек. Количество в группе должно быть максимально приближенно к 2500 человек, но не менее 1000 и не более 2800. Группа домов не должна разрываться (избирательный участок не должен иметь разрывов).
Методика расчета следующая: Берётся дом №1 с количеством, к примеру, 500 человек, добавляется в группу, берётся следующий дом и из поля СоседнийДом_1, также добавляется в группу, затем из поля СоседнийДом_2 и т.д. Далее берутся в группу дома по необходимости, уже соседи соседей. В случае перебора или недобора по количеству, происходит возврат назад и исключение какого либо из соседних домов, но при условии, что исключённый дом может быть включён в другою группу (избирательный участок) т.е. он не останется изолированным внутри группы. Дома, которые попали в группу из категории СоседнийДом, в расчётах поля Дом в дальнейшем не учувствуют.
Как можно программно выполнить эту задачу?

  Ответить  
 
 автор: kot_k_k   (06.02.2011 в 21:50)   личное сообщение
 
 

а зачем - результат все равно известен

  Ответить  
 
 автор: Explorer   (06.02.2011 в 22:00)   личное сообщение
 
 


Как можно программно выполнить эту задачу?



у этой задачи нет програмного решения (точнее есть но оно неверное)

предположим что на участке построено 8 домов из каждого из которых виден любой соседний дом.

вопрос - сколько "соседних" домов будет на участке

-----------
Алекс - почитай что-то по комбинатрике и по статистическим методам.
тебе это нужно...

  Ответить  
 
 автор: kot_k_k   (06.02.2011 в 22:24)   личное сообщение
 
 

ты должен создать таблу в которой нужно занести все "видимые" связи - проще без выборов.

а вообще эту задачу видимостью и выборами решили давно.
"А из нашего окна - площадь Красная видна" - кого видим того и выбрали

  Ответить  
 
 автор: Explorer   (06.02.2011 в 22:37)   личное сообщение
17 Кб.
 
 

>>> а вообще эту задачу видимостью и выборами решили давно

сколько "соседних" домов на этом графе (в постановке ТС)

  Ответить  
 
 автор: Explorer   (06.02.2011 в 22:39)   личное сообщение
44 Кб.
 
 

тьху, картинку перепутал...

вот ==>>>

  Ответить  
 
 автор: kot_k_k   (06.02.2011 в 22:41)   личное сообщение
 
 

первый вариант явно лучше

  Ответить  
 
 автор: kot_k_k   (06.02.2011 в 23:14)   личное сообщение
 
 

если внесена табла соседей - то как вариант -
берем дом (первый) -
выбираем дом - Сосед № 1
- проверка всех соседей для Сосед № 1, если у них существую соседи (кроме выбранных) то данный сосед заносится в таблу и + колв-ов челов.
- выбираем сосед № 2 - и т.д. пока кол-во не дойдетдо макс.

для максимального приближения к желаемому значению 2500 - просто нужно пробежаться по всем соседям Соседей № 1 - N


но при каждом выборе - нужна куча проверок и препроверок

  Ответить  
 
 автор: snipe   (07.02.2011 в 02:33)   личное сообщение
 
 

пытался я решить подобную задачу - мозгов не хватило
а задачка детская - на шахматной доске передвигая коня побывать во всех клеточках по одному разу
на бумаге подобная задача решается влет (причем именно тем способом который вы сейчас пытаетесь применить), а вот заставить машину думать - не получилось

более того есть подводный камень - если машина пойдет считать дома не в пределах одного нужного района, а допустим по окраине города

  Ответить  
 
 автор: AleksKN   (07.02.2011 в 06:34)   личное сообщение
 
 

Видел подобную разработку на Делфи. Считала правильно, но все участки были или змейкой через весь город или почти строго по прямой. Вот думал сделать что-то подобное, но то которое с районированием дружила. Добавить типа что-то приоритета на прирост.

  Ответить  
 
 автор: kot_k_k   (07.02.2011 в 09:02)   личное сообщение
 
 

в таком случае нужно дабоваить деление на районы, кварталы (жилые массивы ) - чтобы змейки не было, в итоге инфы нужно забить столько

может проще вогнать например привязку домов к кварталам и работать с кварталами

  Ответить  
 
 автор: Explorer   (07.02.2011 в 09:40)   личное сообщение
114 Кб.
 
 

>>> в таком случае нужно дабоваить деление на районы, кварталы

это называется эвристические методы анализа графа
http://www.codingrus.ru/print.php?type=A&item_id=2069

==>>

  Ответить  
 
 автор: kot_k_k   (07.02.2011 в 17:38)   личное сообщение
 
 


это называется эвристические методы анализа графа



ну графиню эвристически - пожалуй лучше анал (в)и зировать

  Ответить  
 
 автор: Explorer   (07.02.2011 в 18:30)   личное сообщение
 
 

>>> пожалуй лучше анал (в)и зировать

не лучше а быстрее.

эвристические алгоритмы дают только приблизительное решение,
зато быстрее чем полный перебор

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList