2013-02-26 1 views
2

Меня попросили в интервью придумать решение с линейным временем для декартова продукта. Я сделал итерационный способ O (mn) и рекурсивное решение, которое также является O (mn). Но я не смог уменьшить сложность. Кто-нибудь есть идеи о том, как эта сложность может быть улучшена? Также может ли кто-нибудь предложить эффективный рекурсивный подход?Алгоритм линейного времени для вычисления декартова продукта

+4

Есть результаты 'mn'; минимальная работа, которую вы должны выполнить, - записать каждый результат на выход. Таким образом, вы не можете сделать лучше, чем 'O (mn)'. –

+0

Нет. Декартово произведение дает все возможные пары, которые могут быть образованы двумя наборами, поэтому дальнейшее его уменьшение невозможно. – nhahtdh

+3

Возможно, ваш собеседник думал об использовании квантового компьютера. –

ответ

4

Результаты: mn; минимальная работа, которую вы должны выполнить, - записать каждый результат на выход. Таким образом, вы не можете сделать лучше, чем O(mn).

0

Вопрос, который приходит мне на ум, это «Линейный по отношению к чему?». Помните, что в математике все переменные должны быть определены как имеющие смысл. Замечание Big-O не является исключением. Просто говоря, что алгоритм O (n) не имеет смысла, если n не определено.

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