Блог пользователя _jte_

Автор _jte_, 12 лет назад, По-русски

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

Специально для них (и для всех остальных желающих) хочу предложить следующую задачу:

Пускай есть циклическая группа порядка q. Существуют два алгоритма: первый из них это некий Algo1, который работает следующим образом: , 1 ≤ a, b ≤ q. Сторонним наблюдателям, таким как мы с вами, неизвестны ни a, ни b, ни g, ни q. Просто они формально есть, и мы знаем, что алгоритм работает таким образом.
Второй из них -  это некий Algo2, который работает следующим образом: , 1 ≤ a ≤ q.
Собственно вопрос:  необходимо доказать их эквивалентность в смысле сложности ( ну или говоря другими словами, показать полиномиальную сводимость друг к другу).

UPD. Для некого упрощения задачи, будем считать следующее - данная группа    задает некоторую подгруппу мультипликативной группы поля , причем ее порядок q  пусть будет пока нечетным.
Под эквивалетностью работы понимается следующее:
, многочлены, такие что .
  • Проголосовать: нравится
  • +23
  • Проголосовать: не нравится

12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А умеем ли мы искать обратный к элементу и вычислять квадратный корень?
12 лет назад, # |
Rev. 2   Проголосовать: нравится -21 Проголосовать: не нравится

Не знаю, правильно ли єто, но попробую:
второй алго можно свести к первому: (g, ga) -> (g, ga, ga) -> (g, ga, gb).
То есть, аналогичность очевидна. А насчёт сложности - нужно поиграть с О-символикой для простого сложения или умножения функций.

  • 12 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Наверное, тут важно как раз в обратную сторону показать сводимость.
  • 12 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Вопрос к автору - это доказательство верно и соответствует правильному пониманию задачи? :)
    • 12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Я, если честно, не очень его понял.
      Надо показать следующее - что используя один алгоритм и какую-то полиномиальную заглушку, мы получим результат другого алгоритма, и наоборот.
      Я обновил пост, для лучшего понимания задачи.
12 лет назад, # |
Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

Извините, был напуган.

12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
а что мы умеет вообще делать быстро? Умеем два элемента группы перемножить?
  • 12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    За полиномиальную сложность умеем.
    • 12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Видимо делить тоже умеем
      • 12 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится
        жутко напоминает попытку взлома протокола Диффи-Хеллмана =)
        • 12 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

          Хотя нет, это неверно, т.к. -g^{b/2} -- не степень g и нам не гарантируют, как отработает алгоритм корректно.

          • 12 лет назад, # ^ |
              Проголосовать: нравится +4 Проголосовать: не нравится
            а, ну вот теперь точно все -- остается только уметь проверять, что остаток лежит в порожденной подгруппе -- это легко сделать возведя его в (q-1)/2^s, где s -- максимальная степень на которую делится q-1, это число делится на любой нечетный порядок, поэтому g в этой степени обратится в 1, а та -1 в -1. Собственно, даже g^{b/2} брать не надо.
        • 12 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Оттуда и пошло, все верно)