Mengingat komputer yang cepat dan lambat, pada ukuran apa komputer cepat yang menjalankan algoritma lambat mengalahkan komputer lambat yang menjalankan algoritma cepat?

8

Sumber pertanyaan ini berasal dari program sarjana yang saya ikuti, yang mencakup pengantar analisis algoritma. Ini bukan untuk pekerjaan rumah, melainkan pertanyaan yang diajukan di CLRS.

Anda memiliki mesin yang berjalan lambat x MIPS, dan mesin cepat berjalan di yMIPS. Anda juga memiliki dua algoritma dari kelas yang sama, tetapi kompleksitas waktu berjalan yang berbeda: satu algoritma "lambat" berjalan pada sedangkan algoritma "cepat" berjalan pada .T(n)=c1n2T(n)=c2nlogn

Anda menjalankan algoritma lambat pada mesin cepat, dan algoritma cepat pada mesin lambat. Apa nilai terbesar dari n sehingga mesin cepat yang menjalankan algoritma lambat mengalahkan mesin lambat yang menjalankan algoritma cepat?

Solusi saya sejauh ini:

Temukan himpunan semua sehingga mana adalah bilangan alami.n

c2nlognx>c1n2y
n

Ini adalah pekerjaan saya sejauh ini:

{n:c2nlog2nx>c1n2y,nN}={n:n<c2yc1xlog2n,nN}

Satu-satunya solusi yang terlintas dalam pikiran sekarang adalah dengan plug-n-chug semua nilai sampai saya menemukan n pertama di manan

n<c2yc1xlog(n)

tidak lagi berlaku.

DoggoDougal
sumber
3
Ini benar-benar lebih merupakan pertanyaan matematika daripada pertanyaan tentang ilmu komputer. Jika Anda menggantin dengan x maka Anda memiliki persamaan transendental atas real, yang Anda tidak dapat benar-benar mereduksinya menjadi solusi bentuk-tertutup x. Setelah Anda menemukanx, jawabannya adalah xdibulatkan ke bilangan bulat terdekat. Dengan kata lain, "plug-n-chug" atau "tebak-dan-periksa" sama baiknya dengan yang dapat Anda lakukan dalam kasus umum. Ini biasanya bermanifestasi sebagai metode grafis atau numerik.
Patrick87

Jawaban:

2

Pertimbangkan ketidaksetaraan terakhir Anda:

n<c2yc1xlog(n)

Sekarang, Clogn dengan C=c2yc1xadalah fungsi cekung . Karena itu, ada paling banyak dua persimpangan, dan hanya satu di antaranya yang menarik untuk Anda; yaitu, selesaikan

n=Clog(n)

dan cari tahu algoritma mana yang lebih cepat di interval mana dengan hanya menghitung nilai fungsi masing-masing di beberapa titik dalam interval masing-masing.

Memang benar bahwa menyelesaikan kesetaraan ini secara eksplisit sulit / tidak mungkin. Untuk beberapa perbaikanC, aljabar komputer memberi Anda ekspresi dalam fungsi yang terkenal; persimpangan (nyata) yang menarik ternyata berada di

n=e-W-1(-dalam2C)

jika Cedalam2, dengan Wkyang analisis lanjutan dari fungsi produk log . Fungsi ini tidak memiliki bentuk tertutup yang bagus, tetapi dapat dievaluasi secara numerik untuk diberikanC; misalnya, Anda dapatkan116,74 untuk C=17.

Raphael
sumber
Hanya memastikan: apakah Anda mengartikan persamaan saya sebagai memiliki log natural atau log-base-2? Saya harus mengklarifikasi bahwa setiap instance log (n) adalah dari basis 2, dan akan memodifikasi pertanyaan dengan tepat.
DoggoDougal
Di CS, kami biasanya menggunakan log=log2, sedangkan ahli matematika berasumsi log=ln. Karena itu, tempat saya gunakanlog itu ke pangkalan 2, pengecualian dicatat. Di sinilah (mungkin) di manaln2berasal dari dalam hasil.
Raphael