Apa arti Θ (1) memori?


13

Saya memiliki definisi algoritma in-situ dari profesor, tetapi saya tidak memahaminya.

Algoritma in-situ merujuk pada algoritma yang beroperasi dengan Θ (1) memori.

Apa artinya?


3
Apakah Anda akrab dengan notasi Landau ?
David Richerby

4
"Suatu algoritma dikatakan sebagai algoritma in situ, atau algoritma di tempat, jika jumlah tambahan memori yang diperlukan untuk mengeksekusi algoritma adalah O (1), yaitu, [memori] tidak melebihi konstanta tidak peduli seberapa besar input . Misalnya, heapsort adalah algoritma penyortiran in situ. " en.wikipedia.org/wiki/In_situ#Computer_science
Auberon

@Auberon, harus ditambahkan bahwa memaksakan persyaratan lebih lanjut daripada O ( 1 ) : bahwa total memori yang digunakan dalam setiap doa tertentu tidak jatuh di bawah konstanta tidak peduli ukuran inputnya. Θ(1)O(1)
Olathe

1
@Olathe Saya belum pernah melihat algoritma yang menggunakan lebih dari nol tetapi kurang dari konstanta sumber daya apa pun
adrianN

@adrianN, enkripsi file AES dilakukan dengan penggunaan RAM di bawah batas atas yang konstan. Anda memproses blok pada satu waktu, setiap blok membutuhkan jumlah RAM yang sama untuk diproses, dan RAM dapat digunakan kembali dari satu blok ke blok berikutnya. Contoh yang lebih sederhana adalah mengubah semua huruf dalam file yang disandikan ASCII menjadi huruf besar. Anda dapat membaca dalam satu blok, katakan 4096 byte, dari file, proses itu 4096 byte, tulis hasil blok itu, dan gunakan kembali RAM yang sama untuk blok berikutnya.
Olathe

Jawaban:


13

Pertama, mari kita bongkar apa artinya .Θ(1)

Besar , dan Θ besar , adalah kelas fungsi. Ada definisi formal di sini , tapi untuk tujuan pertanyaan ini, kita mengatakan bahwa fungsi f adalah di O ( 1 ) jika ada konstan c mana, untuk semua x , f ( x ) C . Artinya, f tumbuh paling cepat secepat fungsi konstan.OΘfO(1)cxf(x)Cf

Big- tidak banyak berarti untuk fungsi konstan, karena ketika menggambarkan algoritma waktu atau penggunaan ruang, tidak ada banyak di bawah konstanta. Tetapi untuk menjelaskan apa artinya, f Θ ( 1 ) jika ada beberapa konstanta c , d sedemikian rupa sehingga, untuk semua x , d f ( x ) c . Yaitu, f tumbuh setidaknya secepat, dan paling cepat secepat, sebagai fungsi konstan.ΘfΘ(1)c,dxdf(x)cf

Sekarang apa hubungannya dengan penggunaan memori? Pertimbangkan beberapa algoritma . Ada beberapa fungsi (matematis) yang, diberi input n , memberikan penggunaan memori maksimum dari algoritma Anda A pada setiap input ukuran n . Sebut saja fungsi ini m e m .AnAnmem

Jadi, sekarang kami menggabungkan dua konsep kami. Jika suatu algoritma menggunakan memori, maka fungsi penggunaan memorinya ada di Θ ( 1 ) , artinya ada beberapa d , c sehingga, untuk input apa pun, memori yang digunakan adalah antara d dan c .Θ(1)Θ(1)d,cdc

Singkatnya, ini berarti bahwa penggunaan memori dari algoritma berada dalam kisaran konstan, terlepas dari input.

Biasanya, fungsi memori tidak memperhitungkan memori yang digunakan untuk menyimpan input ke algoritma, karena jika tidak, penggunaan memori akan selalu setidaknya .Θ(n)


"Tidak secara efektif bergantung pada inputnya." - untuk definisi "efektif" apa?
Raphael

Seperti dalam, memori yang digunakan dapat berubah tergantung pada input, tetapi hanya dalam interval tetap. Jangan ragu untuk mengeditnya jika Anda bisa memikirkan kata-kata yang lebih baik.
jmite

Saya tidak berpikir ada kata-kata yang lebih baik daripada "memori yang digunakan adalah antara dan c untuk setiap input". Juga tidak ada kebutuhan untuk itu. dc
Raphael

contoh ilustrasi sederhana akan sangat membantu
vzn

8

Kompleksitas ruang konstan algoritma

Jumlah memori yang digunakan algoritma Anda tidak tergantung input.

Algoritma dikatakan memiliki kompleksitas ruang konstan jika menggunakan jumlah ruang tetap. Itu bisa variabel atau array persis 10 elemen.1010

Namun, algoritma In-situ melakukan fungsi yang dimaksudkan pada input itu sendiri dan dengan demikian membutuhkan ruang ekstra yang sangat sedikit atau tidak ada. Input biasanya ditimpa oleh output saat algoritma dijalankan. ( ref )

Algoritma in-situ tidak mempertimbangkan ruang yang ditempati oleh input dan hanya memperhitungkan ruang ekstra, sambil menghitung kompleksitas ruang.


3
Ini salah. Sebagai contoh, mungkin saja, untuk algoritma tertentu, input kurang dari tiga karakter menggunakan 5 byte memori, sementara semua input yang lebih besar menggunakan sejuta byte memori. Penggunaan memori algoritma itu pasti tidak akan bergantung pada input, tetapi pasti akan menggunakan ruang. Untuk memperbaiki pernyataan tersebut, ada batas atas dan bawah yang konstan untuk penggunaan memori yang tidak bergantung pada input. Θ(1)
Olathe

@Olathe Space ditempati oleh setiap input dalam hal byte dan jumlah input dalam hal jumlah bukan dua konsep yang berbeda?
Prateek

0

Itu berarti bahwa jumlah memori tambahan yang diperlukan untuk algoritma tidak lebih besar dari jumlah konstan yang tidak bergantung pada ukuran input untuk input yang cukup besar.


2
ΘOΩO(x2)f(x)=3x2 f(x)=xΘ(x2)f(x)=3x2f(x)=x
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.