Для висвітлення обговорення в коментарях важливо, для чого ви вимірюєте зростання стосовно.
Як зазначав @Kaveh, не є лінійним в обох одночасно, але є лінійним, якщо одна є постійною, а інша зростає.O(mn)
З іншого боку, , ймовірно, вважатиметься лінійним. Інтуїтивно, якщо подвоюється, або якщо подвоюється, або навіть якщо обидва і подвійні, не може перевищувати подвійного. Це не вірно з ; якщо і обидва подвійні зростають на 4. Ось чому у багатьох контекстах цей час роботи вважатиметься квадратичним. Я наводжу приклад цього зі збігом рядків у параграфах.O(m+n)n m n m + n m n m n m nmnmnm+nmnmnmn
Але зазвичай, коли ви використовуєте нотацію Big- , ви використовуєте її посиланням на щось конкретне. Оскільки ми здебільшого теоретики, це загалом розмір входу до проблеми.O
Візьмемо, наприклад, Matrix Addition. Додавання двох матриць займає час . Але кожен елемент нашого введення торкається лише одного разу, тому це, як правило, можна назвати лінійним. Іншими словами, наш вхід має розмір , тому час роботи лінійний за розміром вхідного сигналу.O ( m n ) O ( m n ) O ( m n )m×nO(mn)O(mn)O(mn)
Тепер давайте розглянемо відповідність рядків - а саме нам дається рядок розміром і рядок розміром і ми хочемо перевірити, чи є зустріч меншої рядка в більшій рядку. Ми можемо перевірити це наївно в час; це, як правило, вважатиметься квадратичним. Чому? Якщо і можуть бути будь-якими, встановіть . Тоді наш час роботи - а наш вхід - розмір .n O ( m n ) m n m = n O ( m 2 ) 2 mmnO(mn)mnm=nO(m2)2m
З іншого боку, якщо використовувати алгоритм Рабіна-Карпа , ми отримуємо (в середньому) час . Наш вхід складався з обох рядків, тому наше введення також було розміром . Тому це, як правило, називається лінійним.O ( m + n )O(m+n)O(m+n)
Підводячи підсумок: як правило, називається лінійним для таких речей, як матричне множення, тому що він лінійний за розміром вхідного сигналу, але його зазвичай називають квадратичним для таких речей, як відповідність рядків через менший вхід. Який термін підходить, залежить від контексту, в якому ви його використовуєте.O(mn)