@haskellru

Страница 1454 из 1551
Alexander
10.09.2018
22:14:59
не понимаю вопроса

Oleg
10.09.2018
22:15:06
Если я знаю, что графы не должны совпадать

Alexander
10.09.2018
22:15:30
почему они должны не совпадать.. ничего не понимаю

Oleg
10.09.2018
22:15:53
Я опять не понял задачи? Я так понял, что мы должны сгенерировать k различных графов n вершин и m рёбер

Google
Alexander
10.09.2018
22:16:00
не

Андрей
10.09.2018
22:16:09
одного графа хватит

Alexander
10.09.2018
22:16:15
пользователь говорит - сгенерируй мне граф из n вершин и m ребер

и ты генерируешь так, чтобы он был похож на случайный

Андрей
10.09.2018
22:16:36
ага

Oleg
10.09.2018
22:16:50
Блин, тогда один простой выбор числа от 1 до C(n*(n-1)/2 ,m)

Alexander
10.09.2018
22:17:04
хорошо бы, чтобы если пользователь ввел n и m ещё раз, то ему бы выдало другой граф

Oleg
10.09.2018
22:17:11
Будет гораздо быстрее кучи рандомов для каждого ребра

Alexander
10.09.2018
22:17:24
да должно быть

у меня правда сейчас в голове не складывается формула как получить сам граф из числа

но это т.к. спать больше надо

т.к. я похожую задчу решал

Oleg
10.09.2018
22:21:43
у меня правда сейчас в голове не складывается формула как получить сам граф из числа
Классическая нумерация комбинаций. Считаем их упорядоченными бит-векторами Как много элементов у которых первого элемента нет C(n-1, m) если выбранное число больше - вычитаем C(n-1, m) выбираем оставшиеся m-1 из n-1 Если нет - выбираем m из n -1с тем же номером

Google
Alexander
10.09.2018
22:22:00
угу

единственное что мне не нравится что C(500*999,500) большое

Oleg
10.09.2018
22:23:49
Но всё одно умножать и делить предвычисленные факториалы быстрее, чем генерить 250*999 рандомов

Alexander
10.09.2018
22:27:09
скорее всего

@IIvana достаточно запутали?

Андрей
10.09.2018
22:28:09
Можно сразу употреблять. Но есть граф сильно разряженный, то алгоритм будет неэкномичный. Он O(число возможных ребёр)
нет, О(число нужных ребер) - мы не лезем вглубь если чсло точек в интервале надо взять меньше 2

я ваш алгоритм пока так и не понял, наверное потому что трачу усилия на доработку своего...

мой кстати нахаляву еще и сам граф строит при этом, не надо восстанавливать по огромному числу

Oleg
10.09.2018
22:31:47
Андрей
10.09.2018
22:33:35
ок, я пока так и не понял почему подкидывая каждый раз монетку для последовательного выбора ребер мы всегда наберем нужное число ребер, но может дойдет

даже на примере - возможных ребер 10, нам надо 8 - кинули 3 раза - не берем - все приплыли

Oleg
10.09.2018
22:34:59
я ваш алгоритм пока так и не понял, наверное потому что трачу усилия на доработку своего...
А какой пакет вы используете для рандомных с заданным распределением?

Андрей
10.09.2018
22:35:27
какой пакет - у меня жс ))) сам писать буду из равномерного

погуглю как это делать, но вроде говорят можно

Oleg
10.09.2018
22:36:22
Тогда точно офтоп

даже на примере - возможных ребер 10, нам надо 8 - кинули 3 раза - не берем - все приплыли
Выбрали один раз рандомное от 1 до 45, потом построили граф с нужным индексом

Андрей
10.09.2018
22:38:46
не, Алексей другое писал, пойду вдумчиво перечитывать )

std::uv
10.09.2018
22:40:39
Если есть вершины а б в г и ребра аб и вг - это граф?

Андрей
10.09.2018
22:41:01
а какие сомнения? связность никто не обещал

Google
Андрей
10.09.2018
22:41:30
если есть вершины а б в г и ребро аб - это тоже граф

хочет юзер граф с 4 вершинами и 1 ребром - юзер всегда прав

std::uv
10.09.2018
22:42:34
Тогда почему нельзя просто выбирать рандомные 2 точки из n записывая в хеш пока не наберется n ребер

Андрей
10.09.2018
22:43:06
вы наверное не читали все сообщения выше?

std::uv
10.09.2018
22:43:31
Вот думаю стоит ли

Андрей
10.09.2018
22:43:39
у такого подхода есть недостатки, скажем так

std::uv
10.09.2018
22:44:14
Очень интересно , проснусь почитаю

Андрей
10.09.2018
22:45:39
но до меня кажется начинает доходить как обойти мою загвоздку в алгоритме Алексея - если из 10 нам надо 8, мы подкинули 2 раза и оба мимо - тупо берем оставшиеся 8 и не подкидываем больше. тогда все быдет быстро и кучеряво, насчет равномерности только не уверен, хотя если небольшие отклонения то может и фиг с ней )

Alexander
10.09.2018
22:52:43
все ок там по вероятности

каждая следующая выборка хранит информацию (в двух числах) о том, сколько мы навыбирали

смотри вероятность первого 8/10, если не выбрали то вероятность второго 8/9, если не выбрали то вероятность третьего 8/8=1

выбрали, четверного 7/7=1

и т.д.

Андрей
10.09.2018
22:56:44
фигасе. круто. признаЮ поражение своего велосипеда с половинным делением…

Alexander
10.09.2018
22:58:10
вариант с номером это очень похожее решение, просто вместо генерации числа на каждом шаге мы генерируем одно зерно, а дальше деление и сравнение

но я боюсь что там большая арифметика и в js это может быть печально (или нет?)

в сях это скорее всего медленнее плохого генератора случайных чисел и быстрее хорошего

кстати про половинное деление - эффективнее делить на L отрезков

Андрей
10.09.2018
23:01:14
ну это уже совсем ловля тактов, меня устроит и генерировать каждый раз рандом. блин, какой умный чатик! )))

Google
Alexander
10.09.2018
23:01:29
и потом смотреть функцию распределения сколько туда попало, дальше более эффективныс алгоритмом решать кусок

в этом случае у тебя не будет расти стек

а будет просто цикл по отрезкам

Андрей
10.09.2018
23:02:00
на L можно, но там гаусса сложнее еще считать

Alexander
10.09.2018
23:02:11
на самом деле это у тебя получится решение похожее на решение Алексея, но более крупными блоками

Андрей
10.09.2018
23:02:47
там при сравнительно небольших N уже будут отклонения Гаусса от честного биномиального играть

А у вас никаких гауссов и приближений - честная монетка каждый раз

Alexander
10.09.2018
23:03:11
у меня есть подозрение, что там можно как-то всё упростить

но проще решение какое понимаешь и точно работает

а дальше уже смотреть, нужно ли что-то ещё делать

на дереве решение с номерами у нас отлично зашло

Андрей
10.09.2018
23:04:56
не, я уверен что последнее понятое мною решение Алексея отлично подойдет. нам же достаточно по порядку ребра перебирать, да? А не случайно из середины дергать, так?

Alexander
10.09.2018
23:05:25
вместо хранения дерева на пару Гб обошлись тройкой 128 битных чисел

выгода!

иначе придется ещё стейт хранить

что кстати плюс т.к. юзеру ты их упорядоченно выдавать будешь

Андрей
10.09.2018
23:06:32
так и думал, просто уточнил ) ващекласс алгоритм!

Alexander
10.09.2018
23:06:38
можно прям стримить

Андрей
10.09.2018
23:06:50
и могу еще и лениво )

Google
Андрей
10.09.2018
23:07:15
прямо строить граф по порядку поступающих ребер

Alexander
10.09.2018
23:07:50
можешь ещё сразу анализ на стриминговых алгоритмах считать

типа там кол-во треугольников или средний вес вершины

как stinger

Андрей
10.09.2018
23:08:47
ага, накопительные характеристики. все плюсы потокового генератора

Alexander
10.09.2018
23:08:47
http://www.stingergraph.com

Terminator
10.09.2018
23:36:39
timCF будет жить. Поприветствуем!

timCF
10.09.2018
23:40:44
Привет. У меня нубский вопрос. Допустим есть две функции hello :: Maybe Int -> Int hello (Just foo) = foo world :: Int world = hello Nothing С точки зрения типизации тут всё правильно, но очевидно что 1) в функции hello не рассмотрены все возможные клаузы для типа Maybe Int 2) функция world из-за пункта 1 будет всегда бросать exception Как сделать так чтобы компилятор хаскеля указывал на подобные ошибки?

Anton
11.09.2018
01:35:00
-Wall ключ компилятору передай

Iva
11.09.2018
05:44:49
Эт не сложная. Стандартная по теорверу.

Я сложные даже придумать не смогу ) Есть N точек, равномерно распределенных на отрезке [0, 1]. Отрезок делится пополам. Каковы вероятности нахождения в левой половине отрезка 0, 1, .... N точек? Хочется получить аналитический вид кривой при стремлении N к бесконечности.

Aleksey
11.09.2018
06:02:03
С -Werror станет ошибкой :)

В любом случае если нужна частичная функция (зачем?), то лучше это сделать явно через клоз с error

Terminator
11.09.2018
06:04:43
@DoctorRyner будет жить. Поприветствуем!

Meowfka
11.09.2018
06:04:51
Хай, кто-нибудь юзал scotty?



Aleksey
11.09.2018
06:10:03
Есть же servant

Страница 1454 из 1551