Задать вопрос
  • Биекция в комбинаторике на конечных множествах?

    Lite_stream
    @Lite_stream Автор вопроса
    shurshur,

    (различные элементы)


    Кажется, что то, что оно отображается именно в различные элементы (то есть нет элемента ни в S ни в G, в который входит 2 и более стрелок) следует из утверждений, что из S выходит из каждого элемента ровно по одной стрелке в G и из G из каждого элемента выходит ровно по одной стрелке в S, и то что f и h сюрьекции, но не напрямую из наличия f: "Тогда любому способу раскладывания пяти шаров по трём ящикам однозначно соответствует последовательность из пяти нулей и двух единиц"
    Написано
  • Биекция в комбинаторике на конечных множествах?

    Lite_stream
    @Lite_stream Автор вопроса
    shurshur, тут к сожалению из того что написано не следует, что |A|⩽|B|, если убрать сюрьективность, которая у автора неявно фигурирует, то возможно такое:

    s1<->g1
    s2<->g2
    s3<->g3
    s2<-g4
    Написано
  • Биекция в комбинаторике на конечных множествах?

    Lite_stream
    @Lite_stream Автор вопроса
    shurshur, просто в комбинаторных "наоборот" это тоже какая-то цепочка рассуждений, только в другую сторону, но смысл одинаковый - из обоих рассуждений следует, что слева из каждого элемента выходит ровно одна стрелка и справа из каждого элемента выходит ровно одна стрелка, а также то что авторы обычно скипают - что отображение сюрьективно

    Пример:

    Сколькими способами можно разложить пять одинаковых шаров по трём различным ящикам? На число шаров в ящике ограничений нет.

    Представим себе, что ящики стоят вплотную друг к другу. Три таких ящика — это фактически две перегородки между ними. Обозначим шар нулём, а перегородку — единицей. Тогда любому способу раскладывания пяти шаров по трём ящикам однозначно соответствует последовательность из пяти нулей и двух единиц; и наоборот, каждая такая последовательность однозначно определяет некоторый способ раскладывания. Например, 0010010 означает, что в первом ящике лежат два шара, во втором — два шара, в третьем — один шар; последовательность 0000011 соответствует случаю, когда все пять шаров лежат в первом ящике.
    Написано
  • Биекция в комбинаторике на конечных множествах?

    Lite_stream
    @Lite_stream Автор вопроса
    Пума Тайланд, то есть всё же авторы часто "упускают" утверждение про то, что f, h также являются и сюръективными?
    Написано
  • Биекция в комбинаторике на конечных множествах?

    Lite_stream
    @Lite_stream Автор вопроса
    Пример из одного учебника, похожим которому можно найти много:

    Сколькими способами можно разложить пять одинаковых шаров по трём различным ящикам? На число шаров в ящике ограничений нет.

    Представим себе, что ящики стоят вплотную друг к другу. Три таких ящика — это фактически две перегородки между ними. Обозначим шар нулём, а перегородку — единицей. Тогда любому способу раскладывания пяти шаров по трём ящикам однозначно соответствует последовательность из пяти нулей и двух единиц; и наоборот, каждая такая последовательность однозначно определяет некоторый способ раскладывания. Например, 0010010 означает, что в первом ящике лежат два шара, во втором — два шара, в третьем — один шар; последовательность 0000011 соответствует случаю, когда все пять шаров лежат в первом ящике.


    Здесь же как раз упоминается про f и h? Или может быть я что-то не понимаю
    Написано
  • Правильное ли док-во существования функции?

    Lite_stream
    @Lite_stream Автор вопроса
    Wataru, понял, спасибо
    Написано
  • Правильное ли док-во существования функции?

    Lite_stream
    @Lite_stream Автор вопроса
    Спасибо за ответ.

    Других быть не может, потому что противоречие: функция не может одновременно быть такой прямой и не быть. А мы прямую вывели.


    Это следует из f(x)-f(0)=2x, что для любого x, разность значения функции в x с её произвольной фиксированной точкой (в данном случае 0) равна удвоенному (или ax в общем случае) аргументу?
    Написано
  • Нужно ли это доказывать в обратную сторону?

    Lite_stream
    @Lite_stream Автор вопроса
    Равноудалены <=> расстояния равны и по разную сторону от C <=> разности равны по модулю и разного знака <=> одна разность = -вторая разность <=> f(x)-C = -(h(x)-C) <=> f(x) + h(x) = 2C.

    Т.е. мы тут не следствия выводили, а построили ряд эквивалентных утверждений.

    да, точно можно же было сразу в обе стороны рассуждения проводить
    Написано
  • Нужно ли это доказывать в обратную сторону?

    Lite_stream
    @Lite_stream Автор вопроса
    . Даже если A > B, вы найдете какие-то решения и потом подстановкой их проверите.

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

    ну то есть, если сначала было доказано геометрически: равноудалены => сумма 2C, то затем видимо нужно показать сумма 2С => равноудалены
    Написано
  • Нужно ли это доказывать в обратную сторону?

    Lite_stream
    @Lite_stream Автор вопроса
    shurshur,

    >Кто и почему равноудалён?
    ну если аргументы f(x) - x1, x2 равноудалены от xв, то f(x1)=(fx2)

    >Что такое X?
    ну X вершина параболы

    >Так-то можно придумать много решений. Например, f(x)=x²-1, g(x)=sin(x+πn), h(x)=sin(x+πm). Тогда любое значение x=π/2+πk будет решением.
    это вроде бы ничему не противоречит

    68f1705888c18772482853.png
    Написано
  • Как правильно заниматься перебором: a³ + b³ + c³ = d³?

    Lite_stream
    @Lite_stream
    Wataru, судя по вопросам ОПа это тролль :)
    Написано
  • Почему моя реализация Shaker Sort-а такая медленная?

    Lite_stream
    @Lite_stream
    Wataru,

    Один из таких костелей - перефетчинг: когда вы читаете данные из какого-то места, процессор заранее читает сразу блок побольше, вдруг пригодится. Начиная с этого адреса и вперед.


    может быть, я что-то не знаю про кэш процессора, но ведь вроде бы RAM просто разделяется на блоки, например, по 64 байта с присваиванием каждому такому блоку чего-то вроде id=addr/64, и при чтении очередного блока, неважно вперёд или назад, процессор смотрит у себя в локальном кеше (по читаемому адресу памяти), есть ли у него такой блок и если есть, то берёт из кэша
    Написано
  • Как симулировать комбинаторные сочетания (C(k, n)) за O(1) памяти?

    Lite_stream
    @Lite_stream Автор вопроса
    Wataru, а, это же просто гипергеометрическое распределение
    Написано
  • Как симулировать комбинаторные сочетания (C(k, n)) за O(1) памяти?

    Lite_stream
    @Lite_stream Автор вопроса
    Rsa97, так тут сразу поставлена задача так что они равновероятны как раз:

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


    Ну вот как раз если через какой-нибудь nextInt() делать, то оно в 24 раза будет чаще появляться, чего я и хочу в том числе избежать
    Написано
  • Как симулировать комбинаторные сочетания (C(k, n)) за O(1) памяти?

    Lite_stream
    @Lite_stream Автор вопроса
    Wataru, вроде бы со шляпой из 28 шаров вот как ещё можно рассуждать:

    Рассмотрим любой "правильный" набор попарно различных элементов {a,b,c,d} у любого элемента (a,b и т.д.) есть по 4 элемента того же цвета, можно сказать с id, тогда для {a,b,c,d} a,b,c и d каждый из них может быть в 4-х экземплярах, что даёт 4^4 вариантов для {a,b,c,d} а всего таких различных четвёрок C(4,7) = 35, итого благоприятных исходов 4^4*35 = 8960. А всего исходов C(4, 28) = 20475. Итого 8960/20475 = 0.437674
    Написано
  • Как симулировать комбинаторные сочетания (C(k, n)) за O(1) памяти?

    Lite_stream
    @Lite_stream Автор вопроса
    Wataru, а, не, множитель C(4,7) не нужен:

    681a7c989a059806672875.png

    Здесь 840 это количество всех нужных префиксов длины 4: 7*6*5*4=840

    И на всякий случай ещё раз симуляцию скину: именно этого случая, где 0.437674 получается: вот
    Написано