Анализ алгоритма среднего случая с использованием метода несжимаемости Колмогорова

Говорят, что метод несжимаемости упрощает анализ алгоритмов для среднего случая. Из того, что я понимаю, это потому, что нет необходимости вычислять все возможные комбинации ввода для этого алгоритма, а затем выводить среднюю сложность. Вместо этого в качестве входного сигнала принимается единственная несжимаемая строка. Поскольку несжимаемая строка типична, мы можем предположить, что этот вход может действовать как точная аппроксимация среднего случая.

Я теряюсь в отношении применения метода Несжимаемости к алгоритму. В стороне, я не математик, но думаю, что эта теория имеет практическое применение в повседневном программировании.

В конечном счете, я хотел бы узнать, как я могу вывести средний случай любого заданного алгоритма, будь он тривиальным или сложным. Может кто-нибудь, пожалуйста, продемонстрировать мне, как метод может быть применен к простому алгоритму? Например, учитывая входную строку S, сохраните все уникальные символы в S, а затем напечатайте каждый отдельно:

void uniqueChars(String s) {
    char[] chars = chars[ s.length() ];
    int free_idx = 0;

    for (int i = 0; i < s.length(); i++) {
        if (! s[i] in chars) {
           chars[free_idx] = s[i];
           free_idx++;
        }
    }

    for (int i = 0; i < chars.length(); i++) {
        print (chars[i]);
    }
}

Только ради аргумента. Я думаю, что псевдокода достаточно. Предположим, что существует линейный поиск для проверки того, содержит ли массив элемент.

Конечно, приемлемы, конечно, лучшие алгоритмы, с помощью которых теория может быть продемонстрирована.

Этот вопрос может быть бессмысленным и непрактичным, но я бы скорее попросил, чем удержал заблуждения.

Ответ 1

воспроизведение моего ответа на вопрос CS.Se для целей межстрановых ссылок

  • Сложность Колмогорова (или Алгоритмическая сложность) имеет дело с оптимальными описаниями "строк" ​​ (в общем смысле строк как последовательности символов)

  • Строка (достаточно) несжимаемая или (достаточно) алгоритмическая случайная, если ее алгоритмическое описание (kolmogorov comlplexity K) не меньше его (буквального) размера. Другими словами оптимальное описание строки, это сама строка.

  • Основным результатом теории является то, что большинство строк являются (алгоритмическими) случайными (или типичными) (что также связано с другими областями, такими как теоремы Годела, через работу Чайтина)

  • Сложность Колмогорова связана с вероятностной (или Shannon) энтропией, на самом деле энтропия является верхней границей на KC. И это относится к анализу, основанному на описательной сложности, на вероятностном анализе. Они могут быть взаимозаменяемыми.

  • Иногда может быть проще использовать вероятностный анализ, другие - описательную сложность (мнения того же позволяют сказать)

Таким образом, в свете вышесказанного, предполагая алгоритмический случайный ввод алгоритма, следует следующее:

  • Вход типичный, поэтому анализ описывает сценарий среднего размера (пункт 3 выше)
  • Размер ввода связан определенным образом с его вероятностью (пункт 2 выше)
  • Можно передать из алгоритмического представления в вероятностное представление (пункт 4 выше)