Andrey
не прямо выше а до этого -0 алгоритм Александра и Алексея
Alexander
просто Алексея, я не решился предлагать этот алгоритм, хотя и думал о нём
Alexander
смотри
Alexander
берёшь первый элемент
Alexander
какая вероятность того, что он в списке?
Andrey
0
Alexander
это конкретное ребро
Andrey
в списке выбранных?
Alexander
какая вероятность, что ребро (1,2) у тебя выбрано если всего у тебя N вершин, и из них выбрано K?
Andrey
к/n
Alexander
вот
Alexander
бросаешь кубик, и узнаешь входит ли оно
Andrey
или нет? )
Alexander
верно
Алексей
Спокой ночи
Alexander
после этого у тебя 2 варианта
Alexander
неа
Andrey
Алексей - пасиб за биномиальное и Гаусса
Alexander
у тебя 2 варианта:
1. выбрали, тогда решаешь задачу с (n-1) ребром и нужно выбрать (k-1)
2. не выбрали тогда n'=n-1, k'=k
Alexander
и идешь по списку дальше
Alexander
да, она изменяется после каждого выбора
Andrey
но тогда я могу набросать кубик так, что к концу не наберу мое К
Oleg
Alexander
не можешь
Andrey
или я туплю
Oleg
Я сделал 1000 графов
Alexander
если я правильно понимаю то или (k-1)/(n-1). или k/(n-1)
Oleg
Как мне посчитать вероятность выбора первого ребра для 1001 графа?
Alexander
она должна стать 1 при k=n
Alexander
не понимаю вопроса
Oleg
Если я знаю, что графы не должны совпадать
Alexander
почему они должны не совпадать.. ничего не понимаю
Oleg
Я опять не понял задачи? Я так понял, что мы должны сгенерировать k различных графов n вершин и m рёбер
Alexander
не
Andrey
одного графа хватит
Alexander
пользователь говорит - сгенерируй мне граф из n вершин и m ребер
Alexander
и ты генерируешь так, чтобы он был похож на случайный
Andrey
ага
Oleg
Блин, тогда один простой выбор числа от 1 до C(n*(n-1)/2 ,m)
Alexander
хорошо бы, чтобы если пользователь ввел n и m ещё раз, то ему бы выдало другой граф
Oleg
Будет гораздо быстрее кучи рандомов для каждого ребра
Alexander
да должно быть
Alexander
у меня правда сейчас в голове не складывается формула как получить сам граф из числа
Alexander
но это т.к. спать больше надо
Alexander
т.к. я похожую задчу решал
Alexander
угу
Alexander
единственное что мне не нравится что C(500*999,500) большое
Oleg
Oleg
Но всё одно умножать и делить предвычисленные факториалы быстрее, чем генерить 250*999 рандомов
Alexander
скорее всего
Alexander
@IIvana достаточно запутали?
Andrey
Andrey
я ваш алгоритм пока так и не понял, наверное потому что трачу усилия на доработку своего...
Andrey
мой кстати нахаляву еще и сам граф строит при этом, не надо восстанавливать по огромному числу
Oleg
Andrey
ок, я пока так и не понял почему подкидывая каждый раз монетку для последовательного выбора ребер мы всегда наберем нужное число ребер, но может дойдет
Andrey
даже на примере - возможных ребер 10, нам надо 8 - кинули 3 раза - не берем - все приплыли
Oleg
Andrey
какой пакет - у меня жс ))) сам писать буду из равномерного
Andrey
погуглю как это делать, но вроде говорят можно
Oleg
Тогда точно офтоп
Oleg
Andrey
не, Алексей другое писал, пойду вдумчиво перечитывать )
Anonymous
Если есть вершины а б в г и ребра аб и вг - это граф?
Andrey
а какие сомнения? связность никто не обещал
Andrey
если есть вершины а б в г и ребро аб - это тоже граф
Andrey
хочет юзер граф с 4 вершинами и 1 ребром - юзер всегда прав
Anonymous
Тогда почему нельзя просто выбирать рандомные 2 точки из n записывая в хеш пока не наберется n ребер
Andrey
вы наверное не читали все сообщения выше?
Oleg
Anonymous
Вот думаю стоит ли
Andrey
у такого подхода есть недостатки, скажем так
Anonymous
Очень интересно , проснусь почитаю
Andrey
но до меня кажется начинает доходить как обойти мою загвоздку в алгоритме Алексея - если из 10 нам надо 8, мы подкинули 2 раза и оба мимо - тупо берем оставшиеся 8 и не подкидываем больше. тогда все быдет быстро и кучеряво, насчет равномерности только не уверен, хотя если небольшие отклонения то может и фиг с ней )
Alexander
все ок там по вероятности
Alexander
каждая следующая выборка хранит информацию (в двух числах) о том, сколько мы навыбирали
Alexander
смотри вероятность первого 8/10, если не выбрали то вероятность второго 8/9, если не выбрали то вероятность третьего 8/8=1