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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 20:40   #1
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию Алгоритм кластеризации координатной плоскости(тут интересно)

Всем доброго времени суток.
Несмотря на МНОГАБУКАВ, вопрос ОЧЕНь простой.

Прошу помочь идеями для разработки алгоритма кластеризации координатной плоскости. Текущая задача следующая, мне необходимо разместить равномерно по "карте" n точек.

Немного о задаче. Я пишу диплом на тему задачи развозки грузов. Прежде чем их развести от баз к пунктам, мне нужно сгенерировать матрицу расстояний(приложил картинкой). Где каждое значение это расстояние от пункта до пункта. Задача может быть и не симметричной.

Что придумал:
Генерирую для каждой точки координаты(x, y), пишу в массив, затем по теореме пифагора для каждой пары точек поlсчитаю расстояние. Все хорошо. Но для того чтобы задача не была бессмысленной, БАЗЫ нужно распределить равномерно по "карте".
размер "карты" я решил определять так:
Код:
if k+m<=20 then begin h:=210; w:=300 end
        else if (k+m>20)and(k+m<=40) then begin h:=300; w:=420 end
          else if (k+m>40)and(k+m<=80) then begin h:=420; w:=600 end
            else begin h:=600; w:=840 end;
где k - кол-во баз.

То есть скажем для четырех баз и 30 точек размер карты будет 420*300, и генерировать эти 4 базы я буду так:
база1:
х=random(210)
y=random(150)

база2:
х=random(210)+210
y=random(150)

база3:
х=random(210)
y=random(150)+150

база4:
х=random(210)+210
y=random(150)+150

Видно, что базы распределятся на 4ех равных участках.

Так вот я сейчас сижу и думаю над алгоритмом этой самой кластеризации, кол-во баз может быть неограниченным. Ну как, не больше 100 думаю точно.

Заранее спасибо откликнувшимся!
Изображения
Тип файла: jpg Снимок2.JPG (103.6 Кб, 135 просмотров)
3BEPOBOY вне форума Ответить с цитированием
Старый 05.04.2011, 22:14   #2
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию

Накатал на скорую руку вот такую процедуру.
считает на какие кусочки делить карту в зависимости от кол-ва баз
Код:
procedure TForm1.Button4Click(Sender: TObject);
var n,x,h,w, osn, ost, w1,w2,w1col,w2col: real; s:string;
begin
    s:=Edit1.Text;
    n:=StrTofloat(s);
    x:=sqrt(n);
    h:=round(x);
    x:=n/h;
    osn:=Int(x);
    ost:=n-osn*h;
    if ost=0 then begin
                     w:=osn;
                     Showmessage('высота '+Floattostr(h)+' ширина '+Floattostr(w));
                  end
              else
                begin
                w1:=osn;
                w1col:=h-ost;
                w2col:= ost;
                w2:=osn+1;
                showmessage('высота '+Floattostr(h)+' ширина '+Floattostr(w1col)+' по '
                +Floattostr(w1)+', '+Floattostr(w2col)+' по '+Floattostr(w2));
                end;
end;
3BEPOBOY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение точки на медиане треугольника в координатной плоскости. Вадим Буренков Свободное общение 4 22.06.2010 19:18
столбиковые диаграммы в одной координатной плоскости NeG_07 Помощь студентам 0 12.05.2010 16:16
Найти точки на координатной плоскости vovey Помощь студентам 6 07.04.2010 13:35
Вот интересно называется "Форум програмистов" а кто нить реально пишет программы тут ? Dmitriy O. Свободное общение 49 11.01.2009 21:09
на координатной плоскости, координаты в ручную Proskurin Помощь студентам 5 18.04.2008 13:31