Dalam jawaban untuk pertanyaan sebelumnya , saya menyebutkan kepercayaan umum tetapi salah bahwa eliminasi "Gaussian" berjalan dalam waktu . Meskipun jelas bahwa algoritma ini menggunakan operasi aritmatika , implementasi ceroboh dapat membuat angka dengan banyak bit secara eksponensial. Sebagai contoh sederhana, misalkan kita ingin mendiagonalisasi matriks berikut:
Jika kita menggunakan versi algoritma eliminasi tanpa pembagian, yang hanya menambahkan kelipatan bilangan bulat dari satu baris ke baris lainnya, dan kami selalu berporos pada entri diagonal dari matriks, matriks keluaran memiliki vektor sepanjang diagonal.
Tapi apa adalah kompleksitas waktu aktual dari eliminasi Gauss? Kebanyakan penulis optimisasi kombinatorial tampaknya senang dengan "sangat polinomial", tapi saya ingin tahu apa sebenarnya polinomial itu.
Sebuah makalah Jack Edmonds tahun 1967 menjelaskan versi eliminasi Gaussian ("mungkin karena Gauss") yang berjalan dalam waktu yang sangat polinomial. Wawasan utama Edmonds adalah bahwa setiap entri dalam setiap matriks perantara adalah penentu minor dari matriks input asli. Untuk matriks dengan entri integer bit, Edmonds membuktikan bahwa algoritmanya membutuhkan integer dengan paling banyak bit . Di bawah asumsi "masuk akal" bahwa , algoritma Edmonds berjalan dalam waktu jika kita menggunakan aritmatika integer buku teks, atau dalam waktu jika kita menggunakan perkalian berbasis FFT, pada RAM integer standar, yang dapat melakukan-bit aritmatika dalam waktu yang konstan. (Edmonds tidak melakukan analisis waktu ini; ia hanya mengklaim bahwa algoritme-nya "baik".)
Apakah ini masih merupakan analisis terbaik yang diketahui? Apakah ada referensi standar yang memberikan batas waktu eksplisit yang lebih baik, atau setidaknya ikatan yang lebih baik pada presisi yang diperlukan?
Lebih umum: Berapa waktu berjalan (pada integer RAM) dari algoritma tercepat yang dikenal untuk memecahkan sistem persamaan linear yang sewenang-wenang?
Jawaban:
Saya pikir jawabannya adalah , di mana kita menghilangkan faktor-faktor logaritma (poli). Batas disajikan dalam "W. Eberly, M. Giesbrecht, P. Giorgi, A. Storjohann, G. Villard. Memecahkan sistem linear integer yang jarang. Proc. ISSAC'06, Genova, Italia, ACM Press, 63-70, Juli 2006 ", tetapi didasarkan pada sebuah makalah oleh Dixon:" Solusi tepat persamaan linear menggunakan ekspansi P-adic, John D. Dixon, NUMERISCHE MATHEMATIK, Volume 40, Nomor 1, 137-141 ".O˜(n3log(∥A∥+∥b∥))
sumber
Saya pikir jawaban untuk pertanyaan pertama Anda juga karena argumen berikut: Makalah Edmonds tidak menjelaskan varian eliminasi Gaussian tetapi ini membuktikan bahwa angka apa pun yang dihitung dalam langkah algoritma merupakan penentu dari beberapa submatrix A. Oleh buku Schrijver tentang Teori Linear dan Pemrograman Integer kita tahu bahwa jika pengkodean A membutuhkan b bit (b harus dalamO˜(n3log(∥A∥+∥b∥)) O˜(log(∥A∥) ) maka salah satu sub-determinannya membutuhkan paling banyak 2b bit (Teorema 3.2). Untuk membuat eliminasi Gaussian sebagai algoritma waktu polinomial, kita harus memperhatikan soal yang dihitung: Kita harus membatalkan faktor umum dari setiap fraksi yang kita hitung dalam setiap langkah menengah dan kemudian semua angka memiliki panjang pengkodean linear dalam panjang pengkodean A.
sumber