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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 17:35   #1
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию Генератор графов

Подскажите пожалуйста алгоритм генератора графов.В инете ничего стоящиге не нашел,язык не принципиален(С++,С#,Delphi,Pascal)
bondik вне форума Ответить с цитированием
Старый 10.05.2009, 18:04   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Всмысле генератор графов? Какие именно графы и как генерировать? Если задавать граф матрицей смежности и тип графа не принципиален (наличие циклов там и другие свойства), то просто случайными числами заполнить эту матрицу и вот он граф.
pu4koff вне форума Ответить с цитированием
Старый 10.05.2009, 18:34   #3
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

тип не принципиален,надо показать алгоритм поиска кратчайшего пути(алгоритмом Дейкстры).То есть генерировать по количеству вершин,а остальное думаю неважно.

Последний раз редактировалось bondik; 10.05.2009 в 19:29.
bondik вне форума Ответить с цитированием
Старый 10.05.2009, 23:42   #4
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

Вообщемто вот код
Код:
   int n = 4; //количество вершин
            int m = 3; //количество ребер
            int[,] mas = new int[4,4];
            for(int iks=0;iks!=3;iks++){
            for(int igr=0;igr!=3;igr++){

                mas[iks,igr]=0;
            }};



            double N=1;
            double x1,y1; int x, y;

            for (int i = 1; i != m; i++)
            {
                Random gg = new Random(DateTime.Now.Millisecond);
                int R = gg.Next(12) + 1;
                N = (n * n * R) + 1;
                x1 = (N / n) + 1;
                x = Convert.ToInt16(x1);
                y1 = N - (x - 1) * n;
                y = Convert.ToInt16(y1);
                if ((mas[x, y] != 1) && (x != y))
                {
                    mas[x, y] = 1;
                    mas[y, x] = 1;

                }
                else m = m + 1;
                

            };
Оригинал прикреплен снизу...
Почемуто х и у выходит за размеры массива...
Изображения
Тип файла: jpg 123.jpg (56.3 Кб, 198 просмотров)
bondik вне форума Ответить с цитированием
Старый 11.05.2009, 02:34   #5
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

а ты посмотри в дэбаггере. Может это м выходит? и за собой х у тянет
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 11.05.2009, 17:58   #6
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

X выходит =( Этот алгоритм взят из книги Хаггарти "Дискретная математика для программистов",немного погуглив узнал что там очень много поечаток было допущенно при переводе,а оригинал на английском найти не могу =( может есть у кого?
bondik вне форума Ответить с цитированием
Старый 18.02.2011, 17:52   #7
Modern45
Новичок
Джуниор
 
Регистрация: 29.10.2009
Сообщений: 2
По умолчанию

Подскажите пожалуйста, в чем отличие генератора графов методом случайных ребер, от примера в этой теме?
Modern45 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программы для постройки деревьев, графов. Armorer Софт 0 22.04.2009 10:10
рисование графов Pitbull Общие вопросы Delphi 0 13.12.2008 19:26
Генератор?? Нестер Софт 5 10.07.2008 13:32
Генератор warlok Общие вопросы Delphi 3 30.05.2008 00:53