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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 14:57   #1
Shpuntik=)
 
Регистрация: 09.01.2013
Сообщений: 7
По умолчанию Поиск кратчайшего пути между N-м числом точек на плоскости

Здравствуйте.
Задачка такая:
Есть плоскость размером 30(абсцисс) на 15 (ординат).

Пользователь должен ввести координаты точек на этой плоскости.

Задача программы найти путь между начальной точкой (видимо это будет точка с самым малым иксом) до конечной точки (с самым большим значением икса).

Как объяснил препод я должен представить что это "деталь" и мы "сверлим" линию от начала детали(начальной точки) то конца(конечной точки).При этом вычислив оптимальный путь(минимальны от первой до последней точки).
Написать на любом языке программирования =)

Заранее спасибо =)

Последний раз редактировалось Shpuntik=); 09.01.2013 в 15:03.
Shpuntik=) вне форума Ответить с цитированием
Старый 09.01.2013, 15:21   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Задача программы найти путь между начальной точкой (видимо это будет точка с самым малым иксом) до конечной точки (с самым большим значением икса).
Так "видимо" или точно? Потому что без дополнительных уточнений это задача коммивояжёра в чистом виде.
Если же мы разрезаем деталь, то... разрез должен идти с постоянным неубыванием x? разрез не должен иметь самопересечений? ещё какое-то условие?
Abstraction вне форума Ответить с цитированием
Старый 09.01.2013, 17:44   #3
Shpuntik=)
 
Регистрация: 09.01.2013
Сообщений: 7
По умолчанию

Задача коммивояжёра для графов,которые уже имеют весы и т.п. атрибуты.


Деталь не то что бы "разрезается",в нем делается кривой вырез и хорошо замечено что от точки к точке Х должен возростать.Вы правы,самопересечений не должно быть.


З.Ы. Спасибо,что помогаете.
Shpuntik=) вне форума Ответить с цитированием
Старый 09.01.2013, 18:20   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Задача коммивояжёра для графов,которые уже имеют весы и т.п. атрибуты.
В Вашем случае вес ребра - его длина.
Цитата:
Деталь не то что бы "разрезается",в нем делается кривой вырез
По ломаной? Или по более сложной кривой?
Цитата:
от точки к точке Х должен возрастать
Вероятно, всё же не убывать. Потому что иначе, если пара точек имеет одну и ту же x-координату, задача нерешаема. А так, можно разбить точки на классы с одинаковой x-координатой; каждый класс проходится от точки с минимальной y-координатой до точки с максимальной либо в обратном порядке; в каждый момент у нас есть минимальное возможное расстояние до "нижней" и "верхней" границы текущего класса.

А вообще, можете привести пример входных данных и ожидаемых выходных?
Abstraction вне форума Ответить с цитированием
Старый 09.01.2013, 19:04   #5
Shpuntik=)
 
Регистрация: 09.01.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
.
А вообще, можете привести пример входных данных и ожидаемых выходных?
ДА

Вводим 6 точек
A(10.6) B(1.7) C(23.2) D(18.10) E(26.4) F(14.4)

в конечном итоге программа доодна выбрать точку B - началом.
Точку E - концом

Путь рассчитать по простой мат.формуле d = \/(х2— х1)^2 + (y2— y1)^2
и получить кратчайший путь : B-A-F-D-E (C-упускаем из результатов,т.к. самая ближеяя к D - E)
Как-то так
Shpuntik=) вне форума Ответить с цитированием
Старый 09.01.2013, 19:30   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Тогда совсем непонятно. То есть, нужно пройти через подмножество точек? Что делать, если расстояния до пары точек в какой-то момент одинаковы? Вообще, что мешает тогда вести линию напрямую от "старта" до "финиша" - она явно будет кратчайшей? Нормально ли, что при подобном анализе "ближнего прицела" мы можем получить не самый короткий путь? (Если точки - (0,0), (8,8), (10,0), (10,10), (19,0) и (20,20), то мы упустим точки (8,8) и (10,10) и пройдём "углом", по длинному пути)
Abstraction вне форума Ответить с цитированием
Старый 10.01.2013, 07:41   #7
Shpuntik=)
 
Регистрация: 09.01.2013
Сообщений: 7
По умолчанию

Честно говоря,меня устроит программа,которая будет просто искать путь до ближайшей точки,но с бОльшим значением икса.Главное что бы получилась кривая от точки ближайшей к началу осей(х.у) до конечной,самой далней точки от начала отсчета.
Shpuntik=) вне форума Ответить с цитированием
Старый 10.01.2013, 09:10   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
Вводим 6 точек
A(10.6) B(1.7) C(23.2) D(18.10) E(26.4) F(14.4)
сортируем по неубыванию нужной координаты
B(1.7) A(10.6) F(14.4) D(18.10) C(23.2) E(26.4)

Цитата:
и получить кратчайший путь : B-A-F-D-E (C-упускаем из результатов,т.к. самая ближеяя к D - E)
А почему?
DE =(26-18)^2 + (4-10)^2 =8^2 + 6^2 =64+36 =100
DC =(23-18)^2 + (2-10)^2 =5^2 + 8^2 =25+64 = 89

кратчайшим как уже заметили будем B - E
следующим пожалуй B - F - E (или В - А - E ?)
чем больше точек использовано, тем длинее путь. (точнее тем он не короче).

Цитата:
меня устроит программа,которая будет просто искать путь до ближайшей точки,но с бОльшим значением икса
сортируем по неубыванию нужной координаты
добавляем "расстояния" до всех последующих точек
анализируем и выбираем нужную нам следующую.
Цитата:
C-упускаем из результатов,т.к. самая ближеяя к D - E
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.01.2013 в 09:25.
evg_m вне форума Ответить с цитированием
Старый 10.01.2013, 09:46   #9
Shpuntik=)
 
Регистрация: 09.01.2013
Сообщений: 7
По умолчанию

Все было бы прекрасно,знал бы хоть какой-то язык программирования=(
Я бы тут не сидел,алгоритм я и сам понимаю и составить могу.Написать программу - нет.
Shpuntik=) вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск кратчайшего пути в графе zokwild Помощь студентам 0 30.11.2012 18:22
Поиск кратчайшего пути в графе BaceK Помощь студентам 0 18.12.2011 11:49
Даны координаты n точек на плоскости. Найти номера двух точек, расстояние между которыми наибольшее. Viwwna Паскаль, Turbo Pascal, PascalABC.NET 2 19.11.2011 06:33
поиск кратчайшего пути LENA_M Общие вопросы C/C++ 0 29.05.2010 22:15