Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/40: Рейтинг темы: голосов - 40, средняя оценка - 4.98
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 9

Алгоритм поиска в глубину и ширину!)

30.04.2020, 20:10. Показов 8487. Ответов 14

Студворк — интернет-сервис помощи студентам
Построить свой неориентированный граф (не менее 5-и вершин и 7-и рёбер ) применить к нему алгоритмы поиска в ширину и глубину. Входные данные - матрица смежности (список смежности вершин) графа.

Добавлено через 35 минут
Мальчики, помогите девочке)Пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2020, 20:10
Ответы с готовыми решениями:

Алгоритм поиска в ширину
Всем привет. Мне нужно реализовать этот алгоритм на java. Пожалуйста подскажите, что нужно делать? Какой тип данных использовать, как...

Алгоритм поиска в ширину и обход всех точек
Привет всем ! Возникла проблема с задачей, нужно помощь... Необходимо реализовать программу реализующая алгоритм поиска, почитав...

Смоделировать работы алгоритмов поиска в ширину и поиска в глубину
Здравствуйте! Требуется помощь, имеется следующий граф, нужно смоделировать на нём работы алгоритмов поиска в ширину и поиска в глубину.

14
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
30.04.2020, 20:11
Цитата Сообщение от Harlly Посмотреть сообщение
помогите девочке)Пожалуйста
тебя в гугле забанили?
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 9
30.04.2020, 20:17  [ТС]
Ну я не поняла как сделать входные данные - матрица смежности. Как это записать в java. С помощью гугла найти не могу.
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
30.04.2020, 20:21
Цитата Сообщение от Harlly Посмотреть сообщение
Ну я не поняла как сделать входные данные - матрица смежности.
обычно матрицы записывают в виде двухмерного массива
1
30.04.2020, 20:54

Не по теме:

Вангую... это перерегался тот, кому вы отказывали с решением..:D
Типа женщине решат охотнее..

0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 9
30.04.2020, 22:10  [ТС]
Ахахахахаххаха, не женщине , а девушке)

Добавлено через 18 минут
Какие-то вы все злые(
0
30.04.2020, 22:34

Не по теме:

Цитата Сообщение от StalinStr Посмотреть сообщение
это перерегался тот, кому вы отказывали с решением.
неа

0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
01.05.2020, 00:27
Какие-то вы все злые(
Какие то вы все охреневшие
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 9
01.05.2020, 10:55  [ТС]
Не хочешь помогать не помогай , зачем ты тогда вообще сидишь на этом сайте
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
01.05.2020, 11:11
Чтобы ты спросил
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 9
01.05.2020, 11:33  [ТС]
Не спросил , а спросила. Спасибо что помог )
0
115 / 79 / 40
Регистрация: 18.12.2015
Сообщений: 192
01.05.2020, 11:50
Лучший ответ Сообщение было отмечено Harlly как решение

Решение

Harlly, в честь первомая держи подарок, писал на 2 курсе. В файле количество вершин и сами ребра. И удачи в освоении алгоритмов, Дейкстра и Флойд будут все же сложнее.

Поиск в глубину
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.io.*;
import java.util.LinkedList;
 
public class Main {
 
    public static void main(String[] args) throws FileNotFoundException, IOException {
 
        int N = 0;
        boolean [] nov;
        LinkedList<Integer>[] graf;
 
 
        try(final InputStream is = new FileInputStream("D:\\Graf\\Graf.txt");
            final Reader rd = new InputStreamReader(is);
            final BufferedReader br = new BufferedReader(rd)){
            String line;
            String [] str;
            N = Integer.valueOf(br.readLine());
 
            nov = new boolean[N];
            graf = new LinkedList[N];
            for(int i=0; i< N; i++)
                graf[i] = new LinkedList<Integer>();
 
            while((line = br.readLine())!=null){
                str = line.split(" ");
                graf[Integer.valueOf(line.split(" ")[0]) - 1].add(Integer.valueOf(line.split(" ")[1]));
            }
        }
 
        System.out.println("Списки инцидентности графа:");
        for(int i=0; i< N; i++) {
            System.out.print(i + 1);
            for (Integer temp : graf[i]) {
                System.out.print("->" + temp);
            }
            System.out.print("\n");
        }
 
        for(int i = 0; i < N; i++)
            nov[i] = true;
 
        System.err.println("Несвязные графы:");
        for(int i=0; i< N; i++) {
            for (Integer temp : graf[i]) {
                if(nov[temp-1]){
                    depth(nov, graf,temp);
                    System.err.println();
                }
            }
        }
 
    }
    static void depth (boolean [] nov, LinkedList<Integer>[] graf, Integer u){
        nov[u-1]=false;
        System.err.print(u + " ");
        for (Integer temp : graf[u-1]) {
            if (nov[temp-1] == true)
                depth(nov, graf, temp);
        }
    }
}
Поиск в ширину
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import java.io.*;
import java.util.LinkedList;
import java.util.Stack;
 
public class Main {
    static boolean stop = false;
    public static void main(String[] args) throws FileNotFoundException, IOException {
 
        int s, t; // Вершины, через которые нужно найти короткий путь
        int n_top; // Количество вершин
        boolean [] nov; // Массив неиспользованых путей
        boolean flag = false;
        int[] pred;
        LinkedList<Integer>[] graf;
 
        try(final InputStream is = new FileInputStream("D:\\Graf\\Graf2.txt");
            final Reader rd = new InputStreamReader(is);
            final BufferedReader br = new BufferedReader(rd)){
            String line;
            String [] str;
            //Считываем количество вершин
            n_top = Integer.valueOf(br.readLine());
            nov = new boolean[n_top];
            pred = new int[n_top];
            graf = new LinkedList[n_top];
 
            //Считываем вершины для пути
            line = br.readLine();
            str = line.split(" ");
            s = Integer.valueOf(line.split(" ")[0]);
            t = Integer.valueOf(line.split(" ")[1]);
 
            for(int i=0; i< n_top; i++)
                graf[i] = new LinkedList<Integer>();
 
            while((line = br.readLine())!=null){
                str = line.split(" ");
                graf[Integer.valueOf(line.split(" ")[0]) - 1].add(Integer.valueOf(line.split(" ")[1]));
            }
        }
        PrintGraf (graf, n_top);
        for(int i = 0; i < n_top; i++) {
            nov[i] = true;
            pred[i] = i + 1;
        }
 
        width(s,graf,nov,pred,t);
        if(stop){
            System.err.println("Самый короткий путь от точки " + s + " до " + t + ":");
            int temp = t-1;
            System.err.print(t + " ");
            while (pred[temp] != s) {
                System.err.print(pred[temp] + " ");
                temp = pred[temp];
            }
            System.err.print(pred[temp] + " ");
        }
    }
 
    static void width(Integer u,LinkedList<Integer>[] graf, boolean[] nov, int [] pred, int t){
        Stack<Integer> left = new Stack<>();
        Stack<Integer> right = new Stack<>();
        right.push(u);
        nov[u-1] = false;
        while(right.empty() == true || stop == false) {
            int at = right.pop();
            for (Integer temp : graf[at-1]){
                if (nov[temp -1]){
                    left.add(temp);
                    nov[temp-1] = false;
                    pred[temp-1] = at;
                    if(temp==t)
                        stop = true;
                }
            }
            while(left.empty() == false){
                right.push(left.pop());
            }
        }
    }
    static void PrintGraf (LinkedList<Integer>[] graf, int n_top){
        System.out.println("Списки инцидентности графа:");
        for(int i=0; i< n_top; i++) {
            System.out.print(i + 1);
            for (Integer temp : graf[i]) {
                System.out.print("->" + temp);
            }
            System.out.print("\n");
        }
    }
}
1
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 9
01.05.2020, 12:10  [ТС]
Спасибо большое))))))

Добавлено через 14 минут
Если честно то я впервые слышу что можно как то через файл что то делать, а что у тебя находится в файле? Как это вообще выглядит ? Извини за тупой вопрос но я пропустила немного материал и пока ещё не разбирала.
0
115 / 79 / 40
Регистрация: 18.12.2015
Сообщений: 192
01.05.2020, 14:10
Лучший ответ Сообщение было отмечено Harlly как решение

Решение

Цитата Сообщение от Harlly Посмотреть сообщение
Как это вообще выглядит
Harlly, для поиска в глубину на 1 строке количество вершин, потом на каждой строке сами ребра. т.е указываются вершины, через которые ребро проходит
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
9
1 5 1
5 1 1
1 4 1
4 1 1
4 6 1
6 4 1
5 6 1
6 5 1
3 2 1 
2 3 1
2 9 1
9 2 1
3 9 1
9 3 1
7 8 1
8 7 1

Например, так. Задача была для ориентированного и неориентированного графа делать, поэтому присутствует и обратный путь

Поиск в ширину аналогичен, только на второй строке, перед записью ребер, добавляются через пробел две вершины для поиска кратчайшего пути
Например, вот так
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
6
1 5
1 2 1
1 3 1
1 4 1
2 1 1
2 3 1
2 4 1
2 5 1
3 1 1
3 2 1
4 1 1
4 2 1
5 2 1
0
0 / 0 / 0
Регистрация: 30.04.2020
Сообщений: 9
01.05.2020, 16:53  [ТС]
Спасибо тебе большое) Очень помог)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.05.2020, 16:53
Помогаю со студенческими работами здесь

Разработать программы поиска в глубину и поиска в ширину при описании графа с помощью матрицы смежности
Ребят помогите, на носу экзамен. Дали задачу,для получения зачета. Весь мозг себе сломал, не как не знаю как её сделать. Прошу вашей...

Алгоритмы поиска в глубину и ширину
Помогите с кодом: на входе файл есть файл вида: n m v1 u1 v2 u2 .... vm um Здесь n - количество вершин графа (целое число,...

Алгоритм поиска в глубину
Мне нужен сам алгоритм, как программа на С ++, желательно с пояснениями к строкам. Может кто-то помочь написать?

Алгоритм поиска в глубину
public void Bfs(int n)//Алгоритм поиска в ширину { bool used = new bool; for (int i = 1; i &lt; N...

Граф, алгоритм поиска в глубину
Доброго времени суток, требуется применив алгоритм поиска в глубину, разработать программу поиска в ориентированном связанном графе пути,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru