![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Tolo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.5.2007 Репутация: нет Всего: нет |
Нужно реализовать генератор случайных графов, используя модель случайного графа.
Моделью случайного графа называется классическая математическая модель, которая должна рассмотреть все возможные рёбра и включить в граф каждое ребро с фиксированной вероятностью p. Если мы хотим, чтобы число рёбер графа было равно E, мы должны выбрать вероятность p=2E/V(V-1) V - количество вершин Я написал прогу которая генерирует вершины с вероятностью p=100/V, тоесть у каждой вершины есть равные шансы "выпасть". Реализовано при помощи СиШарповской функции random, насколько я знаю, управлять вероятностью в этой функции нельзя... Помогите, пожалуйста, реализовать генератор с управляемой вероятностью "выпадения" вершин. Присоединённый файл ( Кол-во скачиваний: 61 )
generator.rar 88,36 Kb |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 9 Всего: 149 |
Ты будешь, как минимум, самым богатым человеком на свете, если сделаешь это Если нужно выбирать узел с учетом его веса, то посмотри тему Фунционал randome как в AdRotator |
|||
|
||||
| Tolo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.5.2007 Репутация: нет Всего: нет |
хех, ну я имел ввиду, задать(выбрать) эту вероятность. Формула есть |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 9 Всего: 149 |
А что мешает прогнать рандом на отрезке [0;1], получить число и сравнить с 2E/V(V-1), если меньше, то попало (берем ребро), если больше, то не попало
Т.е. если вероятность события: 0,235. Рандом дал 0,1236 то событие наступило, 0,59 -- событие не наступило P.S. В первом посте я просто указал на неточность определения |
|||
|
||||
| Tolo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.5.2007 Репутация: нет Всего: нет |
Вот в том то и дело, что до меня, хоть убей, не доперает как это всё реализовать...:(
Этозадание на курсовой проект, что ещё хуже... Если ты сможешь мне помочь именно с реализацией, то буду на тебя молиться недели две Там я прикрепил прогу(код)...если есть время и желание, посмотри, что можно сделать пожаласта... |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 9 Всего: 149 |
Tolo, сначала конкретизируй вопрос, а то непонятно что именно ты хочешь: либо просто помощи в конкретном вопросе (тогда нужно этот вопрос конкретизировать), либо чтобы тебе просто решили задачу (тогда непонятен смысл двух последних абзацев)
"Управляемая" вероятность Долго мучался как же назвать метод. Все равно не удовлетворен.
Но в данном случае это не важно, так как вероятность "p=2E/V(V-1)" просто утверждает, что все ребра графа равновероятны! E --- реальное количество ребер, V(V-1)/2 --- количество возможных вариантов ребер Поэтому забей на свою "управляемую вероятность" и случайным образом формируй ребра графа. Мало кто будет анализировать большой кусок чужего кода, поэтому локализируй проблемный код и выложи его здесь P.S. Откуда взялось число p=100/V? С потолка? Это сообщение отредактировал(а) Guedda - 18.5.2007, 12:26 |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 9 Всего: 149 |
Судя по всему, проблема в следующем коде:
Нужно так изменить его, чтобы мы в итоге получили M ребер, случайно распределенных в графе. Формализуем задачу: требуется равномерно заполнить часть матрицы N*N расположенную ниже главной диагонали. Или еще формальней: как выбрать m элементов (реальных ребер) среди n элементов (возможных ребер) (m < n). Вот только я не сильно представляю как это можно рационально сделать используя генератор случайных чисел. Это сообщение отредактировал(а) ivashkanet - 18.5.2007, 13:16 |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |