Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как пройти по пунктам от нач. до конечн. пункта без повторений 
:(
    Опции темы
maxi2
Дата 14.10.2013, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.5.2012

Репутация: нет
Всего: 1



У меня было такое задание. Есть начальный и конечный пункты. Между ними есть другие пункты. Надо организовать алгоритм прохода по пунктам без повторений. То есть я так понимаю при встрече первого пункта его надо как то обозначить и после очередной встречи не проходить его снова. Но как это сделать при помощи цыкла for; или например стэка. Я сам недостаточно понял смысл задание но понимаю что алгоритм должен быть какой то достаточн простой?
PM MAIL   Вверх
Stolzen
Дата 14.10.2013, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Судя по описанию, вы хотите организовать обход графа. 
Существуют два основных подхода - обход графа в глубину и в ширину. 

http://en.wikipedia.org/wiki/Graph_traversal

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

Это сообщение отредактировал(а) Stolzen - 14.10.2013, 23:36


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
maxi2
Дата 15.10.2013, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 8.5.2012

Репутация: нет
Всего: 1



Я понял что sеt не позволяет добавление дублирующих элементов. Но мне кажется там надо какую то метку поставить. То есть правильно вы говорите что ставить ЧЕКЕД как тру. Но как на практике это реализовать. То есть как построить код. То есть это напоминает выбор всех шаров из ящика после которого их кладут назад. если поставить метку чекед то где гарантия что некоторые заранее их не имеют. Что надо проверять не помечены эти пункты некоторым образом а если помечены то это уже факт что неправильно использовать этот обьект снова. Хотя может здесь и надо было просто пояснить суть этого алгоритма. Однако я подумал что это какой то элементарный вопрос. Сперва вообще подумал что это вопрос о наиболее кратком пути-дейкстры.
PM MAIL   Вверх
Magistrus
Дата 15.10.2013, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Если обходить граф методом в глубину, нужry стэк и  рекурсия. 

Код

public static void dfs(Node node, Node goal) { // Node - вершина графа
    if (node.equals(goal)) 
    {
            System.out.println(node);
    } 
    else 
    {
       // Вызываем этот же метод для каждой смежной вершины
        for (int i = 0; i < node.getNode().size(); i++) 
        { 
            // Проверяем, вызывали ли мы этот метод для вершины node.getNode().get(i)  
            if (stack.add(node.getNode().get(i))) 
           { 
                 dfs(node.getNode().get(i), goal);
           }
        }
    }   
}


Это сообщение отредактировал(а) Magistrus - 15.10.2013, 11:12
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.