Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 27 | 5 | 9
Назад Вниз Каталог Обновить

Аноним # OP  29/07/17 Суб 19:42:14  158043123  
abcDEF.jpg (47Кб, 500x458)
pic2.JPG (45Кб, 634x573)
Эй, двач, есть тут гениальные погромисты? Пишу тут одну программу (C#), и уже несколько дней не могу справиться со следующим:
Есть набор точек, некоторые из них связанны друг с другом, нужно написать функцию, которая по этим связям выстраивает все пути из некой точки X в некую точку Y. К примеру, есть вот такие точки (см. пикрил 1), нужно найти все пути из A в F. Функция должна будет вернуть лист(или массив) с 4 объектами (AXF, ABCXF, ABCXDEF, AXDEF).
На данный момент есть класс Path, который содержит в себе набор точек класса PathPoint, ну и собственно сам класс PathPoint с полями double X, Y, Z, а так же полем List<PathPoint> Links, которое содержит другие точки, с которыми данная точка связана. (Например, A.Links = {B, X})
Нужна какая-то рекурсия с циклами вроде for/foreach, но максимум, чего мне удалось достичь, это то, что функция находила 1 путь, идущий из A через B, который попадал в массив, и 1 путь, идущий из А через X (это был путь AXCB, и он в массив не попадал, т.к. ведет не в F).
Чет очень долго мудохаюсь с этим, пока мои функции выглядят так (см. пик 2)
Аноним 29/07/17 Суб 19:42:49  158043144
ьамп
Аноним 29/07/17 Суб 19:44:16  158043226
de9aae6-55047-n[...].jpg (78Кб, 612x604)
бамп
Аноним 29/07/17 Суб 19:44:58  158043265
7216105355.jpg (37Кб, 550x523)
еще бамп
Аноним 29/07/17 Суб 19:45:14  158043282
Я бы использовал волновой алгоритм
Аноним # OP  29/07/17 Суб 19:46:26  158043346
>>158043282
Ща загуголю
Аноним 29/07/17 Суб 19:46:44  158043356
5aaa8e67gw1dwhe[...].jpg (53Кб, 600x341)
А пока бамп
Аноним 29/07/17 Суб 19:53:14  158043730
Зачем оно надо?
Аноним 29/07/17 Суб 19:53:26  158043743
В каждой точке модно побывать не более одного раза?
Аноним # OP  29/07/17 Суб 19:55:08  158043842
>>158043743
Ну да, иначе все зациклится навечно
В дальнейшем надо будет найти кратчайший путь, но с этим проблем не возникнет
Аноним 29/07/17 Суб 19:55:31  158043866
>>158043743
Хотя из твоего описания ясно что да.
Просто рекурсивный шаг, который останавливается, если найдена последняя точка или мы попали в вершину графа в которой уже побывали. Подозреваю оптимальнее по времени и памяти не получится, по времени уж точно.
Но ты лучше скажи зачем тебе это, может мы получше решение подскажем, да и вообще на мейлаче доска есть для таких вопросов.
Аноним 29/07/17 Суб 19:57:02  158043964
>>158043842
Если нужен кратчайший, то по времени можно получить лучше, вееромпускаешь всевозможные шаги, пока не попадешь в нужную точку, единственное памяти может е хватить, нужно проверять, что не попал в вершину в которой побывал.
Аноним 29/07/17 Суб 19:58:23  158044046
>>158043964
Ну т.е. в твоем варианте на первом шаге получаешь
ax
ab
потом
abc
aba(отбрасываем)
axf - закончили поиск
Аноним # OP  29/07/17 Суб 20:00:06  158044139
>>158043866
Делаю бота для игры, планирую сделать для локации карту, которая будет состоять из таких вот путей, чтобы в дальнейшем он мог по ней ориентироваться.
Сперва хотел найти все возможные пути, а потом уже найти самый короткий среди них, тут стоит понимать, что самый короткий – не всегда тот, в котором меньше всего точек, искать буду именно длину (сумму длин отрезков в пути)
Аноним 29/07/17 Суб 20:01:41  158044233
>>158044139
Тогда перебирай все варианты, просто выкидывая те, в которых встречаются повторяющиеся буквы.
Возможно, проще будет сразу написать ему все маршруты.
Аноним # OP  29/07/17 Суб 20:06:22  158044496
>>158044233
Так и пытался делать, заводил переменную Path temp, перебирал варианты, записывая в temp очередную букву, в конце temp закидывал в result. Но так получалось, что составив путь(например, AXCB), программа хоть и выходила из цикла foreach, значение переменной temp было AXCB, и она продолжала дальше пихать в эту переменную другие буквы, вместо того, чтобы начать формировать новый путь. Я уже вообще не соображаю, что я делаю не так
Аноним # OP  29/07/17 Суб 20:09:55  158044677
-dLeqoHMpWo.jpg (59Кб, 604x604)
бамп, может еще кто подскажет
Аноним 29/07/17 Суб 20:11:02  158044738
>>158043123 (OP)
Алгоритмы поиска пути из сферы игродела не подойдут?
Аноним 29/07/17 Суб 20:11:12  158044751
Песдец, господа погромисты. Овердесяти постов и никто блять не упомянул что задача решена 50 лет назад в общем случае. Велосипедостроители хуевы.

Топикстартер,пиздуй в википедию и гугли "Алгоритм Дейкстры". И прочитай йобаного Седжвика иди какого другого умного дядьеу, чьобы не изобретать велосипеды там где они не нужны
Аноним 29/07/17 Суб 20:12:00  158044793
>>158044677
Вообще это уже решеная задача. погугли. Но давно давно, будучи школьником сам её решал довольно смешным способом.
Аноним 29/07/17 Суб 20:18:38  158045127
>>158044496
Прочти, но это проблемы не алгоритма, а того, что ты - дерьмовый кодер.
Алсо почитай про рекурсию, возможно, проблема в этом. Просто почитай определение и глянь примеры.
Аноним 29/07/17 Суб 20:18:41  158045128
>>158044751
Этому полуебку надо вообще все пути перебрать, нахуй ему дейкстра чтобы перебирать этот комбинаторный пиздец, лол кек.
Аноним # OP  29/07/17 Суб 20:34:42  158045891
Как я понял, алгоритмом Дейкстры я найду кратчайшее расстояние, а сам путь мне как записать?
Аноним 29/07/17 Суб 20:41:05  158046213
Кури основы теории графов. Там именно то, что тебе нужно. Чтобы таких проблем не было, люди вышку получают, лол

И да, Дейкстру не нужно, из пушки по воробьям.
Аноним # OP  29/07/17 Суб 20:44:05  158046348
>>158046213
Ну я не программист изначально, изучаю по мере необходимости. Попробую поискать что-то по теме, но было бы неплохо найти хоть какое-то решение для начала,а потом уже оптимизировать
Аноним 29/07/17 Суб 20:55:19  158046985
>>158046348
Короче, предлагаю тебе простое. Создаешь у каждого узла счетчик, который 0 если ты еще не был в узле, и 1 если был. Дальше делаешь реккурентную функцию которая бегает по всем возможным путям, и как только доходит до B записывает куда-нибудь этот путь.
Аноним 29/07/17 Суб 20:58:11  158047148
>>158046348
а какое у тебя образование?
Аноним # OP  29/07/17 Суб 20:59:32  158047228
>>158047148
филологическое

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 27 | 5 | 9
Назад Вверх Каталог Обновить

Топ тредов
Избранное