Untuk menjelaskan diskusi dalam komentar, penting untuk mengukur pertumbuhan Anda.
Seperti disebutkan oleh @Kaveh, tidak linier di keduanya pada saat yang sama, tetapi linier jika yang satu adalah konstanta dan yang lainnya tumbuh.O(mn)
Di sisi lain, kemungkinan akan dianggap linier. Secara intuitif, jika m menggandakan, atau jika n menggandakan, atau bahkan jika keduanya m dan n menggandakan, m + n tidak bisa lebih dari dua kali lipat. Hal ini tidak benar dari m n ; jika m dan n keduanya ganda m n naik dengan 4. Inilah sebabnya mengapa dalam banyak konteks waktu berjalan ini akan dianggap kuadratik. Saya memberikan contoh ini dengan pencocokan string dalam beberapa paragraf.O(m+n)mnmnm+nmnmnmn
Tetapi biasanya ketika Anda menggunakan notasi Big- , Anda menggunakannya dalam referensi untuk sesuatu yang khusus. Karena kita sebagian besar ahli teori, umumnya ukuran input untuk masalah.O
Mari kita ambil Matrix Addition, misalnya. Menambahkan dua matriks membutuhkan O ( m n ) waktu. Tetapi setiap elemen dari input kami hanya disentuh satu kali, jadi ini biasanya akan disebut linear. Dengan kata lain, input kami berukuran O ( m n ) , jadi waktu berjalan O ( m n ) linier dalam ukuran input.m×nO(mn)O(mn)O(mn)
Sekarang mari kita lihat pencocokan string - yaitu, kita diberi string ukuran dan string ukuran n dan kami ingin melihat apakah ada kemunculan string yang lebih kecil di dalam string yang lebih besar. Kita dapat memeriksa ini secara naif dalam waktu O ( m n ) ; ini umumnya dianggap kuadrat. Mengapa? Jika m dan n dapat berupa apa saja, atur m = n . Maka waktu berjalan kami adalah O ( m 2 ) dan input kami berukuran 2 m .mnO(mn)mnm=nO(m2)2m
Di sisi lain, jika kita menggunakan algoritma Rabin-Karp , kita mendapatkan (rata-rata) waktu. Input kami terdiri dari kedua string, jadi input kami juga berukuran O ( m + n ) . Oleh karena itu, ini umumnya akan disebut sebagai linear.O(m+n)O(m+n)
Singkatnya: umumnya disebut linier untuk hal-hal seperti perkalian matriks karena linier dalam ukuran input, tetapi umumnya disebut kuadrat untuk hal-hal seperti pencocokan string karena input yang lebih kecil. Istilah mana yang sesuai tergantung pada konteks Anda menggunakannya.O(mn)