Efisiensi tak terduga dari urutan kuasi-acak

Dalam artikel ini, saya menyajikan urutan kuasi-acak rendah divergensi baru yang memberikan peningkatan signifikan terhadap urutan modern, seperti Sable, Niederreiter, dll.


Gambar 1. Perbandingan berbagai urutan kuasi-acak dengan divergensi rendah. Perhatikan bahwa yang saya usulkan R -setelah menciptakan lebih banyak poin yang terdistribusi secara merata daripada semua metode lainnya. Selain itu, semua metode lain memerlukan pemilihan parameter dasar yang cermat, dan dalam kasus pemilihan yang salah menyebabkan degenerasi (misalnya, di kanan atas)

Topik yang dibahas dalam artikel ini

  • Urutan Divergensi Rendah dalam Satu Dimensi
  • Metode divergensi rendah dalam dua dimensi
  • Jarak pengepakan
  • Set Perbedaan Rendah Multiclass
  • Urutan semu acak pada permukaan bola
  • Ubin bidang semi-periodik
  • Masker dithering dalam grafis komputer

Beberapa waktu yang lalu, posting ini diposting di beranda Hacker News. Anda bisa membaca pembahasannya di sana .

Pendahuluan: acak versus kuasi acak


Pada Gambar 1, Anda dapat melihat bahwa dengan pengambilan sampel acak seragam sederhana dari suatu titik di dalam satuan persegi, akumulasi titik diamati, dan juga area tanpa titik ("white noise") muncul. Sebuah urutan kuasi-acak dengan divergensi rendah adalah metode untuk membangun (tak terbatas) poin berurutan dengan cara deterministik, yang mengurangi kemungkinan akumulasi (divergensi), sambil memastikan cakupan yang seragam dari seluruh ruang ("blue noise").

Urutan acak semu dalam satu dimensi


Metode untuk membuat urutan quasirandom sepenuhnya ditentukan dengan divergensi rendah dalam satu dimensi sangat dipelajari dan dipecahkan secara umum. Dalam posting ini, saya terutama akan mempertimbangkan urutan terbuka (tak terbatas), pertama dalam satu dimensi, dan kemudian beralih ke dimensi yang lebih tinggi. Keuntungan mendasar dari sekuens terbuka (mis., Dapat diperpanjang dalam n ) terletak pada kenyataan bahwa jika total kesalahan berdasarkan jumlah anggota yang terbatas terlalu besar, maka urutan dapat diperluas tanpa membuang semua poin yang dihitung sebelumnya. Ada banyak cara untuk membangun urutan terbuka. Anda dapat membagi tipe yang berbeda ke dalam kategori dengan metode membangun parameter dasar (hiper):

  • fraksi irasional: Kronecker, Richtmayer, Ramshaw
  • (Gonta-ganti) bilangan prima: Van der Corpute, Holton, Foret
  • Polinomial Tak Tereduksi: Niederreiter
  • Polinomial primitif: Sable

Demi singkatnya, dalam posting ini saya terutama akan membandingkan rekursif aditif baru R - urutan yang termasuk dalam kategori pertama, yaitu, untuk metode rekursif berdasarkan bilangan irasional (sering disebut urutan Kronecker, Weil atau Richtmeier), yang merupakan peringkat 1 kisi, dan urutan Holton, yang didasarkan pada urutan van der Corpute satu dimensi canonical. Urutan rekursif kanonik Kronecker didefinisikan sebagai:

R_1 (\ alpha): \; \; t_n = \ {s_0 + n \ alpha \}, \ quad n = 1,2,3, ...


dimana  alpha - bilangan irasional. Perhatikan bahwa entri \ {x \} menunjukkan bagian pecahan x . Dalam perhitungan, fungsi ini sering dinyatakan sebagai

R1( alpha):tn=s0+n alpha( textrmmod1); quadn=1,2,3,...


Di s0=0 beberapa anggota urutan pertama R( phi) sama dengan:

tn=0,618,0,236,0,854,0,472,0,090,0,708,0,327,0,944,0,562,0,180,798,416,0,034,0,652,0,271,0,888,...


Penting untuk diperhatikan artinya s0 tidak mempengaruhi karakteristik umum dari urutan, dan dalam hampir semua kasus sama dengan nol. Namun, dalam menghitung opsi s neq0 memberikan tingkat kebebasan tambahan, yang sering bermanfaat. Jika s neq0 , maka urutan tersebut sering disebut "urutan kisi bergeser". Terlepas dari kenyataan bahwa secara default s=0 Saya percaya bahwa ada pertimbangan teoretis dan praktis yang nilainya harus standar s=1/2 . Nilai  alpha memberikan perbedaan terkecil yang mungkin jika  alpha=1/ phi dimana  phi - Ini adalah rasio emas. Yaitu

 phi equiv frac sqrt5+12 simeq1.61803398875...;


Sangat menarik untuk dicatat bahwa ada banyak nilai lain.  alpha , yang juga memungkinkan kami untuk mendapatkan perbedaan yang optimal, dan mereka semua terkait satu sama lain oleh transformasi Mobius

 alpha= fracp alpha+qr alpha+s quad textrmuntuksemuabilanganbulatp,q,r,s quad textrmsedemikianrupa|psqr|=1


Sekarang kita membandingkan metode rekursif ini dengan urutan van der Korput yang terkenal dengan urutan terbalik pembuangan [ van der Korput, 1935 ]. Sekuens Van der Corpute sebenarnya adalah sekuens sekuens, yang masing-masing didefinisikan oleh hiperparameter unik b . Beberapa anggota pertama dari urutan dengan b = 2 sama:

t[2]n= frac12, frac14, frac34, frac18, frac58, frac38, frac78, frac116, frac916, frac516, frac1316, frac316, frac1116, frac716, frac1516,...


Pada bagian selanjutnya, kami membandingkan karakteristik umum dan efektivitas dari masing-masing urutan ini. Pertimbangkan masalah penghitungan integral tertentu

A= int10f(x) textrmdx


Kami dapat memperkirakannya sebagai:

A simeqAn= frac1n sumni=1f(xi), quadxi dalam[0,1]


  • Jika \ {x_i \} sama i/n , ini adalah rumus segi empat ;
  • Jika \ {x_i \} dipilih secara acak, maka ini adalah metode Monte Carlo ; tapi
  • Jika \ {x_i \} adalah elemen dari urutan dengan divergensi rendah, maka ini adalah metode quasi-Monte Carlo .

Grafik di bawah ini menunjukkan kurva kesalahan khas. sn=|AAn| untuk memperkirakan integral tertentu yang terkait dengan fungsi ini, f(x)= textrmexp( fracx22),x dalam[0,1] untuk: (i) titik kuasi-acak dari rekursi aditif, di mana  alpha=1/ phi , (biru); (ii) titik acak semu dari urutan van der Corput, (oranye); (iii) titik yang dipilih secara acak, (hijau); (iv) Sable sequence (red).

Ini menunjukkan bahwa untuk n=106 solusi poin dengan pengambilan sampel acak mengarah ke kesalahan  simeq104 , urutan van der Corput menyebabkan kesalahan  simeq106 sedangkan R( phi) - urutannya menyebabkan kesalahan  simeq107 itu di  sim 10 kali lebih baik daripada kesalahan van der Corput dan  sim 1000 kali lebih baik daripada pengambilan sampel acak (seragam).


Gambar 2. Perbandingan integrasi numerik satu dimensi menggunakan berbagai metode Monte Carlo kuasi-acak. Semakin rendah nilainya, semakin baik. Baru R2 - urutan (biru) dan urutan Sable (merah) jelas yang terbaik.

Berikut ini layak disebutkan di sini:

  • ini sesuai dengan pengetahuan bahwa kesalahan untuk pengambilan sampel acak yang seragam berkurang secara asimptotik 1/ sqrtn , dan kesalahan untuk kedua urutan kuasi-acak cenderung 1/n .
  • Hasil untuk R1( phi) Urutan berikutnya (biru) dan Sable (merah) adalah yang terbaik.
  • Grafik menunjukkan bahwa urutan van der Corpute memberikan hasil yang baik, tetapi sangat konsisten untuk tugas integrasi!
  • Dapat dilihat di sini bahwa untuk semua nilai n urutan R1( phi) menghasilkan hasil yang lebih baik daripada urutan van der Corput.

Urutan baru R1 , yang merupakan urutan Kronecker menggunakan rasio emas, adalah salah satu pilihan terbaik untuk metode integrasi Monte Carlo quasirandom satu dimensi (Quasirandom Monte Carlo, QMC).

Perlu dicatat juga bahwa meskipun  alpha= phi secara teoritis memberikan opsi yang terbukti optimal,  sqrt2 sangat dekat dengan optimal, dan hampir semua nilai irasional lainnya  alpha memberikan kurva kesalahan yang unggul untuk integrasi satu dimensi. Itu sebabnya sangat sering digunakan  alpha= sqrtp untuk nomor prima apa pun. Selain itu, dari sudut pandang perhitungan, nilai acak yang dipilih dalam interval  alpha dalam[0,1] itu hampir pasti akan (dalam batas-batas akurasi mesin) bilangan irasional, dan karenanya merupakan pilihan yang baik untuk urutan dengan divergensi rendah. Untuk keterbacaan visual, gambar di atas tidak menunjukkan hasil dari urutan Niederreiter, karena mereka praktis tidak bisa dibedakan dari hasil urutan Sobol dan R . Urutan Niederreiter dan Sable (bersama dengan pemilihan parameter yang dioptimalkan) yang digunakan dalam posting ini dihitung dalam Mathematica menggunakan apa yang disebut "generator tertutup dan sepenuhnya dioptimalkan dari perpustakaan Intel MKL" dalam dokumentasi.

Urutan semu acak dalam dua dimensi


Sebagian besar metode modern untuk membangun varian rendah dalam dimensi yang lebih tinggi hanya menggabungkan (komponen demi komponen) d urutan satu dimensi. Untuk singkatnya, dalam posting kami terutama akan mempertimbangkan urutan Holton [ Holton, 1960 ], urutan Sable, dan d Urutan Kronecker -dimensi.

Urutan Holton dibangun menggunakan sederhana d berbagai deretan van der Corpute satu-dimensi, yang dasarnya sederhana untuk semua yang lain. Artinya, mereka adalah angka coprime berpasangan. Tanpa ragu, pilihan yang paling umum karena kesederhanaan dan logikanya yang jelas adalah pilihan yang pertama d bilangan prima. Distribusi 625 poin pertama yang didefinisikan oleh urutan (2,3) Holton ditunjukkan pada Gambar 1. Meskipun banyak sekuens Holton dua dimensi adalah sumber sekuens yang sangat baik dengan divergensi rendah, telah diketahui bahwa banyak dari mereka sangat bermasalah dan tidak menunjukkan divergensi rendah. Sebagai contoh, Gambar 3 menunjukkan bahwa Holton's (11,13) -setelah menghasilkan garis yang sangat nyata. Upaya besar dilakukan untuk mengembangkan metode untuk memilih model dan pasangan bermasalah. (p1,p2) . Dalam dimensi yang lebih tinggi, masalahnya menjadi lebih rumit.

Ketika menggeneralisasi ke dimensi yang lebih tinggi, metode rekursif Kronecker mengalami kesulitan yang bahkan lebih besar. Meskipun menggunakan  alpha= sqrtp sekuens satu dimensi yang sangat baik diciptakan, sangat sulit untuk bahkan menemukan pasangan bilangan prima yang dapat digunakan sebagai dasar untuk kasus dua dimensi yang tidak bermasalah! Disarankan untuk menggunakan nomor irasional terkenal lainnya sebagai solusi, misalnya  phi, pi,e,... . Mereka memberikan hasil yang cukup dapat diterima, tetapi umumnya tidak digunakan, karena mereka biasanya tidak sebagus urutan Holton yang dipilih dengan benar. Upaya besar sedang dilakukan untuk memecahkan masalah degenerasi ini.

Solusi yang diusulkan menggunakan skipping / burning, leaping / thinning. Dan untuk pengkodean (pengacakan) dari urutan terakhir, teknik lain digunakan, sering digunakan untuk mengatasi masalah ini. Perebutan tidak dapat digunakan untuk membuat urutan terbuka (tak terbatas) dengan divergensi rendah.


Gambar 3. Urutan (11,13) -Holton jelas bukan urutan divergensi rendah (kiri). Juga tidak aditif rekursif (11,13) -setelah (di tengah). Beberapa urutan rekursif dua dimensi aditif yang menggunakan bilangan irasional terkenal cukup baik (kanan).

Demikian pula, meskipun secara umum hasil yang lebih baik dari urutan Sable, kompleksitasnya dan, yang lebih penting, kebutuhan untuk pemilihan hyperparameter yang sangat hati-hati membuatnya tidak begitu ramah.

Jadi sekali lagi, di d pengukuran:

  • urutan Kronecker khas membutuhkan pilihan d bilangan irasional yang bebas linear;
  • Urutan Holton membutuhkan d bilangan bulat berpasangan satu sama lain; tapi
  • Urutan Sable membutuhkan pilihan d nomor panduan.

Urutan baru Rd - satu-satunya d -dimensi kuasi-acak dimensional dengan divergensi rendah, tidak memerlukan pilihan parameter dasar.

Generalisasi Rasio Emas


tl; dr Di bagian ini saya akan berbicara tentang cara membangun kelas baru d -dimensi terbuka (tak terbatas) berdimensi rendah, tidak memerlukan pilihan parameter dasar, memiliki sifat unggul divergensi rendah.

Ada banyak cara untuk menggeneralisasi urutan Fibonacci dan / atau rasio emas. Metode yang diusulkan di bawah ini untuk menggeneralisasi rasio emas bukanlah hal baru [ Krchadinac, 2005 ]. Selain itu, polinomial karakteristik dikaitkan dengan banyak area aljabar, termasuk bilangan Perron dan bilangan Piso-Vijayaraghavan . Namun, hubungan eksplisit antara bentuk umum ini dan konstruksi urutan dimensi tinggi dengan divergensi rendah adalah baru di dalamnya. Kami mendefinisikan pandangan umum rasio emas  phid sebagai akar positif yang unik xd+1=x+1 . Itu adalah,

Untuk d=1 ,  phi1=1.61803398874989484820458683436563... , yang merupakan rasio emas kanonik.

Untuk d=2 ,  phi2=1.32471795724474602596090885447809... . Nilai ini sering disebut konstanta plastik dan memiliki sifat yang indah (lihat juga di sini ). Diasumsikan bahwa nilai ini kemungkinan besar akan optimal untuk masalah dua dimensi yang sesuai [ Hensley, 2002 ].

Untuk d=3 ,  phi3=1.220744084605759475361685349108831...

Untuk d>3 , meskipun akar persamaan ini tidak memiliki bentuk aljabar tertutup, kita dapat dengan mudah memperoleh perkiraan numerik baik dengan metode standar, misalnya, metode Newton, atau dengan mencatatnya untuk urutan berikut Rd( phid) :

t0=t1=...=td=1;


tn+d+1=tn+1+tn, quad textrmforn=1,2,3,..


Urutan konstanta khusus ini  phid dinamai pada tahun 1928 oleh arsitek dan biksu Hans van de Laan sebagai " angka harmonik ". Makna khusus ini dapat diungkapkan dengan sangat elegan sebagai berikut:

 phi1= sqrt1+ sqrt1+ sqrt1+ sqrt1+ sqrt1+...


 phi2= sqrt[3]1+ sqrt[3]1+ sqrt[3]1+ sqrt[3]1+ sqrt[3]1+...


 phi3= sqrt[4]1+ sqrt[4]1+ sqrt[4]1+ sqrt[4]1+ sqrt[4]1+...


Kami juga memiliki properti yang sangat elegan berikut:

 phid= limn to infty fractn+1tn


Urutan ini, kadang-kadang disebut urutan Fibonacci umum atau ditangguhkan, telah dipelajari cukup dalam [ As, 2004 , Wilson, 1993 ], dan urutan untuk d=2 sering disebut urutan Padovan [ Stuart, 1996 , OEIS A000931 ], dan urutan d=3 tercantum dalam [ OEIS A079398 ]. Seperti yang dinyatakan di atas, tugas utama dari posting ini adalah untuk menggambarkan hubungan eksplisit antara urutan umum dan konstruksi ini d Urutan -dimensi dengan divergensi rendah.

Hasil utama: berikut nonparametrik d -Dimensi urutan terbuka (tak terbatas) Rd( phid) memiliki karakteristik perbedaan rendah yang sangat baik dibandingkan dengan metode lain yang ada.

\ mathbf {t} _n = \ {n \ pmb {\ alpha} \}, \ quad n = 1,2,3, ...


 textrmwhere quad pmb alpha=( frac1 phid, frac1 phi2d, frac1 phi3d,... frac1 phidd)


 textrmand phid  textrmadalahrootpositifunikxd+1=x+1


Untuk dua dimensi, urutan umum untuk n=150 ditunjukkan pada gambar 1. Poin-poinnya jelas terdistribusi jauh lebih merata R2 -setelah dari pada (2, 3) -Holton, Urutan Kronecker berdasarkan ( sqrt3, sqrt7) , Urutan Niederreiter dan Sable. (Karena kompleksitas urutan Niederreiter dan Sable, mereka dihitung dalam Mathematica menggunakan kode eksklusif yang disediakan oleh Intel.) Jenis urutan di mana vektor dasar  pmb alpha adalah fungsi dari nilai material tunggal, sering disebut urutan Korobov [Korobov, 1959]

Lihat lagi Gambar 1 untuk membandingkan berbagai urutan kuasi-acak dua dimensi dan divergensi rendah.

Kode dan Demo


Dalam satu dimensi, pseudo-code untuk n anggota ( n = 1,2,3, ....) didefinisikan sebagai

 g = 1.6180339887498948482 a1 = 1.0/g x[n] = (0.5+a1*n) %1 

Dalam dua dimensi, pseudo-code untuk koordinat x dan yn anggota ( n = 1,2,3, ....) Didefinisikan sebagai

 g = 1.32471795724474602596 a1 = 1.0/g a2 = 1.0/(g*g) x[n] = (0.5+a1*n) %1 y[n] = (0.5+a2*n) %1 

Kodesemu dalam tiga dimensi untuk koordinat x , y dan zn anggota ( n = 1,2,3, ....) didefinisikan sebagai

 g = 1.22074408460575947536 a1 = 1.0/g a2 = 1.0/(g*g) a3 = 1.0/(g*g*g) x[n] = (0.5+a1*n) %1 y[n] = (0.5+a2*n) %1 z[n] = (0.5+a3*n) %1 

Templat kode python. (perhatikan bahwa array dan loop Python mulai dari awal!)

 import numpy as np # Using the above nested radical formula for g=phi_d # or you could just hard-code it. # phi(1) = 1.61803398874989484820458683436563 # phi(2) = 1.32471795724474602596090885447809 def phi(d): x=2.0000 for i in range(10): x = pow(1+x,1/(d+1)) return x 

 # Number of dimensions. d=2 # number of required points n=50 g = phi(d) alpha = np.zeros(d) for j in range(d): alpha[j] = pow(1/g,j+1) %1 z = np.zeros((n, d)) # This number can be any real number. # Common default setting is typically seed=0 # But seed = 0.5 is generally better. for i in range(n): z[i] = (seed + alpha*(i+1)) %1 print(z) 

Saya menulis kode sedemikian rupa sehingga sesuai dengan notasi matematika yang digunakan dalam posting ini. Namun, untuk alasan konvensi pemrograman dan / atau efisiensi, beberapa modifikasi perlu disebutkan. Pertama, sejak itu R2 adalah urutan rekursif aditif, formulasi alternatif z yang tidak memerlukan perkalian floating point dan mempertahankan akurasi tinggi untuk sangat besar n memiliki bentuk

 z[i+1] = (z[i]+alpha) %1 

Kedua, dalam bahasa yang dapat membuat vektor, kode fungsi fraksional dapat di-vectorisasi sebagai berikut:

 for i in range(n): z[i] = seed + alpha*(i+1) z = z %1 

Akhirnya, kita bisa mengganti penambahan angka floating point dan integer ini dengan mengalikan semua konstanta dengan 232 , dan kemudian mengubah fungsi frac (.) sesuai. Berikut adalah demo kode sumber yang dibuat oleh orang lain berdasarkan urutan ini:


Jarak pengepakan minimum


Baru R2 -setelah itu adalah satu-satunya kuasi dua dimensi - urutan acak dengan divergensi rendah di mana jarak pengepakan minimum dikurangi hanya menjadi 1/ sqrtn .

Meskipun analisis teknis standar perhitungan perbedaan adalah untuk mengevaluasi d - perbedaan, pertama-tama kita akan menyebutkan beberapa cara geometris lainnya (dan mungkin jauh lebih intuitif!) untuk menunjukkan seberapa banyak urutan baru lebih disukai daripada metode standar lainnya. Jika kita menyatakan jarak antar titik i dan j untuk dij , dan d0= textrminfdij maka grafik di bawah ini menunjukkan bagaimana itu bervariasi d0(n) untuk R -followingences, (2,3) - Holton, Sable, urutan Niederreiter dan urutan acak. Ini bisa dilihat pada Gambar 6.

Seperti pada gambar sebelumnya, nilai jarak minimum dinormalisasi dengan koefisien 1/ sqrtn . Anda mungkin memperhatikannya setelah itu n=300 poin dalam urutan acak (hijau) hampir pasti muncul dua poin yang sangat dekat satu sama lain. Terlihat juga bahwa meskipun -sekitar Holton (2,3) jauh lebih baik daripada pengambilan sampel secara acak, sayangnya, asimtotik menurun menjadi nol. Untuk urutan Sable, alasan normalisasi berkurang menjadi nol d0 terletak pada fakta bahwa Sable sendiri menunjukkan bahwa urutan Sable jatuh dengan cepat /n - yang bagus, tapi jelas jauh lebih buruk daripada R2 yang berkurang hanya sebesar 1/ sqrtn .

Untuk urutan R( phi2) (biru) jarak minimum antara dua titik secara konstan jatuh ke dalam interval dari 0,549/ sqrtn sebelumnya 0,868/ sqrtn . Perhatikan bahwa diameter optimal 0,868 sesuai dengan faktor pengemasan 59,2%. Bandingkan ini dengan paket lingkaran lainnya .

Perhatikan juga bahwa pengambilan sampel disk Bridson Poisson , yang tidak dapat diperluas n dan biasanya direkomendasikan secara default, itu masih menciptakan faktor pengemasan 49,4%. Perlu mempertimbangkan konsep itu d0 mengikat urutan  phid perbedaan rendah dengan angka / vektor yang kurang tepat di d pengukuran [ Hensley, 2001 ]. Meskipun kita tahu sedikit tentang angka-angka buruk yang dapat diperkirakan dalam dua dimensi, konstruksi  phid dapat memberi kami tampilan baru pada angka yang kurang dapat diperkirakan dalam dimensi yang lebih tinggi.


Gambar 4. Jarak berpasangan minimum untuk berbagai urutan dengan divergensi rendah. Catat itu R2 - urutan (biru) selalu merupakan opsi terbaik; selain itu, ini adalah satu-satunya urutan di mana jarak yang dinormalisasi cenderung tidak nol pada n rightarrow infty . Urutan Holton (oranye) menempati urutan kedua, dan urutan Sable (hijau) dan Niederreiter (merah) tidak begitu baik, tetapi masih jauh lebih baik daripada urutan acak (ungu). Semakin besar, semakin baik, karena ini sesuai dengan jarak pengemasan yang lebih panjang.

Diagram Voronoi


Cara lain untuk memvisualisasikan distribusi titik yang seragam adalah dengan membuat diagram Voronoi dari yang pertama n titik-titik urutan dua dimensi dengan pewarnaan berikutnya masing-masing daerah tergantung pada daerahnya . Gambar di bawah ini menunjukkan bagan warna Voronoi untuk (i) R2 - selanjutnya; (ii) (2,3) urutan Holton, (iii) rekursi utama; dan (iv) pengambilan sampel acak sederhana. Untuk semua angka digunakan skala warna yang sama. Di sini lagi, jelas sekali R2 Urutan ini memberikan distribusi yang jauh lebih seragam daripada urutan Holton atau pengambilan sampel acak sederhana. Gambarnya sama seperti di atas, hanya diwarnai sesuai dengan jumlah simpul di setiap sel Voronoi. Tidak hanya jelas di sini R - urutan memberikan distribusi yang lebih seragam daripada Holton atau pengambilan sampel acak sederhana, tetapi fakta bahwa nilai-nilai utama lebih terlihat n hanya terdiri dari segi enam! Jika kita mempertimbangkan urutan Fibonacci umum, maka A1=A2=A3=1; quadAn+3=An+1+An . Yaitu An :

$$ menampilkan $$ \ begin {array} {r} 1 & 1 & 1 & 2 & 2 & 3 & 4 & 5 & 7 \\ 9 & \ textbf {12} & 16 & 21 & 28 & 37 & \ textbf {49} & 65 & 86 \\ 114 & \ textbf {151 } & 200 & 265 & 351 & 465 & \ textbf {616} & 816 & 1081 \\ 1432 & \ textbf {1897} & 2513 & 3329 & 4410 & 5842 & \ textbf {7739} & 10252 & 13581 \\ 17991 & \ textbf {23833} & 31572 & 41824 & 55405 & 7 {97229} & 128801 & 170625 \\ 226030 & \ textbf {299426} & 396655 & 525456 & 69.081 & 922111 & \ textbf {1221537} & 1618192 & 2143648 \\ \ end {array} $$ display $$ $$


Semua nilai di mana n=A9k2 atau n=A9k+2 hanya terdiri dari segi enam.


Gambar 4. Visualisasi bentuk diagram Voronoi berdasarkan luas masing-masing poligon Voronoi untuk (i) R2 - selanjutnya; (ii) (2,3) - selanjutnya berdasarkan bilangan prima; (iii) (2,3) setelah Holton, (iv) Niederraiter; (v) Sable; dan (iv) pengambilan sampel acak sederhana. Warna menunjukkan jumlah sisi setiap poligon Voronoi. Saya ulangi: sudah jelas itu R( phi) -setelah memberikan distribusi yang jauh lebih seragam daripada urutan lainnya dengan divergensi rendah.

Pada nilai-nilai tertentu n Kotak Voronoi untuk R2 -setelah hanya terdiri dari segi enam.


Gambar 5. Visualisasi bentuk diagram Voronoi berdasarkan jumlah sisi setiap poligon Voronoi untuk (i) R2 - selanjutnya; (ii) (2,3) - selanjutnya berdasarkan bilangan prima; (iii) (2,3) setelah Holton, (iv) Niederraiter; (v) Sable; dan (iv) pengambilan sampel acak sederhana. Warna menunjukkan jumlah sisi setiap poligon Voronoi. Saya ulangi: sudah jelas itu R( phi) -setelah memberikan distribusi yang jauh lebih seragam daripada urutan lainnya dengan divergensi rendah.

Ubin semi-acak Delaunay untuk pesawat


R -afterence adalah satu-satunya urutan kuasi-acak dengan divergensi rendah yang dapat digunakan untuk membuat d - Dimensi periodik semi-dimensional menggunakan Delaunay mesh-nya.

Triangulasi Delaunay, yang mirip dengan Count Voronoi, memberikan kesempatan untuk melihat distribusi ini secara berbeda. Namun, yang lebih penting, triangulasi Delaunay menyediakan metode baru untuk membuat ubin kuasi periodik (ubin mosaik) dari sebuah pesawat. Triangulasi Delaunay R2 -setelah memberikan pola yang jauh lebih seragam daripada urutan Holton atau pengambilan sampel acak. Secara khusus, jika triangulasi distribusi titik Delaunay dilakukan, di mana n sama dengan salah satu urutan Fibonacci umum: AN=$1,1,1,2,3,4,5,7,9,12,16,21,28,37,... , maka triangulasi Delaunay hanya terdiri dari tiga segitiga yang dipasangkan secara identik, yaitu, dari jajaran genjang (rhomboids)! (Kecuali untuk segitiga yang memiliki simpul umum dengan cembung cembung.) Selain itu,

Pada nilai n=Ak Triangulasi Delaunay R2 -bentuk berikutnya membentuk quasi periodic tilings, yang masing-masing hanya terdiri dari tiga segitiga dasar (merah, kuning, biru), yang selalu terhubung berpasangan dan membentuk ubin quasi periodic (ubin) pesawat dengan tiga jajaran genjang (rhomboids).


Gambar 6. Visualisasi triangulasi Delaunay untuk (i) R( phi2) - selanjutnya; (ii) (2,3) urutan Holton, (iii) rekursi utama; dan (iv) pengambilan sampel acak sederhana. Warna menunjukkan luas setiap segitiga. Keempat grafik menggunakan skala yang sama. Dan di sini sekali lagi jelas sekali R( phi2) -setelah memberikan distribusi yang jauh lebih seragam daripada urutan lainnya dengan divergensi rendah.
Catat itu R2 berdasarkan  phi2=1.32471795724474602596 menjadi piso dengan jumlah terkecil, (a  phi=1.61803... Merupakan jumlah terbesar dari piano). Koneksi ubin kuasi periodik dengan angka kuadratik dan kubik Piso bukanlah hal baru [ Elkharrat dan Masakova], tapi saya percaya bahwa untuk pertama kali ubin kuasi periodik dibuat berdasarkan  phi2=1.324719... .

Animasi di bawah ini menunjukkan bagaimana jaring Delaunay untuk urutan R2 berubah dengan penambahan poin secara bertahap. Perhatikan bahwa ketika jumlah poin sama dengan anggota dari deret Fibonacci umum, maka seluruh grid Delaunay hanya terdiri dari jajaran genjang merah, biru, dan kuning (rhomboids), yang disusun dalam bentuk kuasi periodik ganda.


Gambar 7

Meskipun susunan jajaran genjang merah menunjukkan keteraturan yang cukup besar, orang dapat dengan jelas melihat bahwa jajaran genjang biru dan kuning ditempatkan dalam bentuk kuasi periodik. Spektrum Fourier dari kisi ini dapat dilihat pada Gambar 11, yang mewakili spektrum titik klasik. (Perhatikan bahwa urutan rekursif berdasarkan bilangan prima juga tampaknya quasi periodic dalam arti bahwa itu adalah pola non-berulang yang dipesan. Namun, polanya dalam interval n tidak begitu konstan, dan juga sangat tergantung pada pilihan parameter dasar. Oleh karena itu, kami akan memfokuskan minat kami pada tilt quasi periodik hanya dengan urutan R2 .) Ini hanya terdiri dari tiga segitiga: merah, kuning, biru. Perhatikan bahwa dalam urutan ini R( phi2) semua jajaran genjang dari setiap warna memiliki ukuran dan bentuk yang sama. Rasio aspek dari segitiga individu ini sangat elegan. Yaitu

 textrmArea(merah):Area(kuning):Area(biru)=1: phi2: phi22$


Hal yang sama berlaku untuk frekuensi relatif segitiga:

f( textrmred):f( textrmyellow):f( textrmblue)=1: phi2:1


Dari sini dapat disimpulkan bahwa total area relatif yang dicakup oleh tiga segitiga dalam ruang adalah:

f( textrmred):f( textrmyellow):f( textrmblue)=1: phi22: phi22$


Dapat juga diasumsikan bahwa kita dapat membuat ubin quasi periodic ini melalui substitusi berdasarkan urutan A. Yaitu

A rightarrowB; quadB rightarrowC; quadC rightarrowBA


Untuk tiga dimensi, jika kita mempertimbangkan urutan Fibonacci umum, maka B1=B2=B3=B4=1; quadBn+4=Bn+1+Bn . Yaitu

B_n = \ {1,1,1,1,2,2,2,4,4,4,5,7,8,9,12,15,17,21,27,32,38,48,59 , 70,86.107.129, ...


Pada nilai-nilai tertentu n=Bk 3D Delaunay mesh terkait dengan urutan R3 , mendefinisikan kisi kristal kuasi periodik.

Pengemasan yang tidak digunakan, bagian 2


Gambar di bawah ini menunjukkan yang pertama n=2500 poin untuk setiap urutan dua dimensi dengan divergensi rendah. Selain itu, masing-masing sel 50 × 50 = 2500 berwarna hijau hanya jika mengandung tepat 1 titik. Artinya, semakin banyak kotak hijau, semakin seragam distribusi 2500 poin dalam 2500 sel. Persentase sel hijau untuk masing-masing angka adalah sebagai berikut: R2 (75%), Holton (54%), Kronecker (48%), Niederreiter (54%), Sable (49%) dan acak (38%).


Gelombang suara


Hanya untuk bersenang-senang, atas permintaan pembaca News Hacker, saya memodelkan bagaimana semua distribusi titik kuasi-acak ini bisa terdengar ! Saya menggunakan fungsi Listplay dari Mathematica: " ListPlay [{a1, a2, ...}] membuat objek yang mereproduksi sebagai suara, yang amplitudonya diberikan sebagai urutan level." Karena itu, tanpa komentar, saya akan membiarkan Anda memutuskan sendiri mana yang paling Anda sukai di antara distribusi kuasi-acak satu-dimensi (mono) dan distribusi kuasi-acak dua-dimensi (stereo).

MonoStereo
Acak
Sable
Niederreiter
Holton
Kronecker
R

Set Perbedaan Rendah Multiclass


Beberapa sekuens divergensi rendah menunjukkan apa yang disebut "divergensi rendah multi-kelas". Hingga saat ini, kami mengasumsikan bahwa ketika kami perlu mendistribusikannya serata mungkin n poin, maka semua poin adalah sama dan tidak dapat dibedakan satu sama lain. Namun, dalam banyak situasi, ada berbagai jenis titik. Kami mempertimbangkan masalah distribusi seragam n sehingga tidak hanya semua poin didistribusikan secara merata, tetapi juga poin dari kelas yang sama. Secara khusus, anggaplah ada nk ketik poin k , (dimana n1+n2+n3+...+nk=n ), maka distribusi multiset dengan distribusi rendah adalah distribusi di mana masing-masing nk poin didistribusikan secara merata. Dalam kasus kami, kami menemukan itu R -Rangkaian dan urutan Holton mudah untuk beradaptasi dengan urutan multiset dengan divergensi rendah, cukup dengan menempatkan titik bergantian dari setiap jenis.

Gambar di bawah ini menunjukkan bagaimana mereka didistribusikan n=150 titik, sedangkan 75 berwarna biru, 40 pedas, 25 berwarna hijau, dan 10 berwarna merah. Untuk urutan rekursif aditif, ini dipecahkan secara sepele: 75 anggota pertama hanya sesuai dengan biru, 40 berikutnya ke oranye, 25 berikutnya ke hijau, dan 10 terakhir ke titik merah. Teknik ini hampir bekerja untuk urutan Holton dan Kronecker, tetapi berkinerja sangat buruk di urutan Niederreiter dan Sable. Selain itu, tidak ada teknik yang dikenal untuk generasi berkelanjutan dari distribusi titik multi-skala di urutan Niederreiter dan Sable. Ini menunjukkan bahwa distribusi titik multiclass , misalnya, seperti mata ayam , sekarang dapat dijelaskan dan dibangun langsung menggunakan urutan dengan divergensi rendah.

Urutan R2 Adalah urutan kuasi-acak divergensi rendah yang menyediakan konstruksi mudah dari divergensi rendah multi-kelas.


Gambar 9. Urutan multiskala dengan divergensi rendah. Secara berurutan R tidak hanya semua titik didistribusikan secara merata, tetapi juga titik masing-masing warna.

Poin acak semu di bola


Dalam bidang grafis dan fisika komputer, sering kali perlu untuk mendistribusikan titik pada permukaan bola tiga dimensi secara merata. Ketika menggunakan urutan kuasi-acak terbuka (tidak terbatas), masalah ini berkurang hanya untuk menempatkan titik-titik kuasi-acak yang terdistribusi secara merata dalam satuan persegi pada permukaan bola menggunakan proyeksi Lambert yang sama. Lambert mengubah proyeksi standar menempatkan titik (u,v) dalamU[0,1] hingga(x,y,z) dalamS2 memiliki bentuk:

(x,y,z)=( cos lambda cos phi, cos lambda sin phi, sin lambda)


 textrmwhere quad cos( lambda pi/2)=(2u1); quad phi=2 piv

Sejak ini  phi2 - Urutan benar-benar terbuka, memungkinkan Anda untuk mengambil urutan titik tak terbatas ke permukaan bola, satu titik pada suatu waktu. Ini kontras dengan metode lain, seperti kisi - kisi spiral Fibonacci , yang membutuhkan mengetahui jumlah poin di muka. Pada inspeksi visual, kita dapat melihatnya kembali dengan jelas n=1200 baru R( phi2) - Urutan terdistribusi lebih baik daripada overlay Holton atau Kronecker, yang, pada gilirannya, jauh lebih seragam daripada pengambilan sampel acak.


Gambar 10

Grafik komputer dithering


Kebanyakan teknik dithering modern (misalnya, dithering Floyd-Steinberg) didasarkan pada distribusi kesalahan, yang tidak terlalu cocok untuk pemrosesan paralel dan / atau optimalisasi langsung dalam GPU. Dalam kasus seperti itu, titik dithering dengan topeng gentar statis (mis., Sepenuhnya tergantung pada gambar target) menunjukkan karakteristik kinerja yang sangat baik. Mungkin topeng dithering yang paling terkenal dan banyak digunakan didasarkan pada matriks Bayer , tetapi yang lebih baru mencoba mensimulasikan karakteristik noise biru lebih dekat. Kesulitan non-sepele menciptakan topeng gentar berdasarkan urutan divergensi rendah dan / atau noise biru adalah bahwa urutan divergensi rendah ini memproyeksikan integer Z ke titik dua dimensi dalam interval [0,1)2 . Tetapi untuk topeng dithering, diperlukan fungsi yang memproyeksikan koordinat bilangan dua dimensi dari topeng raster menjadi nilai kecerahan / ambang batas nyata dalam interval. [0,1) . Saya menyarankan pendekatan berikut berdasarkan R- selanjutnya. Untuk setiap piksel (x, y) dalam topeng, kami menetapkan nilai kecerahannyaI(x,y) dimana:

I(x,y)=α1x+α2y(mod1);


αα=(α1,α2)=(1ϕ2,1ϕ22)


ϕ2  -  x3=x+1


Yaitu x=1.32471795724474602596 , yang artinya

α1=0.75487766624669276;α2=0.569840290998


Selain itu, jika fungsi gelombang segitiga ditambahkan untuk menghilangkan diskontinuitas yang disebabkan oleh fungsi frac (.) Pada setiap batas integer:

T(z)={2z,if 0z<1/222z,if1/2z<1


I(x,y)=T[α1x+α2y(mod1)];


kemudian mask dan diagram Fourier / frekuensi ditingkatkan lebih lanjut. Kami juga mencatat bahwa sejak itu

limnAnAn+1=0.754878;limnAnAn+2=0.56984


maka bentuk ungkapan di atas terkait dengan persamaan kongruen berikut

Anx+An+1y(modAn+2) for integers x,y


Dithering R-mask menciptakan hasil yang bersaing dengan metode modern berdasarkan pada blue noise mask. Tapi tidak seperti topeng noise biru, mereka tidak perlu dihitung terlebih dahulu, karena mereka dapat dihitung secara real time.

Perlu dicatat bahwa struktur ini juga diusulkan oleh Mittring , tetapi ia menemukan koefisien secara empiris (dan tidak mereproduksi nilai akhir). Selain itu, ini membantu dalam memahami mengapa rumus empiris Jorge Jimenez digunakan untuk membuat "Call of Duty" (sering disebut "Interleaved Gradient Noise") bekerja dengan sangat baik .

I(x,y)=(FractionalPart[52.9829189FractionalPart[0.06711056x+0.00583715y]]


Namun, ini membutuhkan 3 perkalian floating point dan dua% 1 operator, dan rumus sebelumnya menunjukkan bahwa kita bisa melakukan ini hanya dengan dua perkalian floating point dan satu operasi% 1. Tetapi yang lebih penting, posting ini memberikan pemahaman matematis yang lebih jelas tentang mengapa topeng gentar dalam bentuk ini sangat efektif, jika tidak optimal. Hasil matriks dithering ini ditunjukkan di bawah ini menggunakan gambar uji Lena 256 × 256 klasik serta pola tes catur sebagai contoh. Ini juga menunjukkan hasil menggunakan masker dithering standar Bayer, serta satu contoh dengan noise biru. Dua metode noise biru yang paling umum adalah pengambilan sampel Void-and-Cluster dan Poisson. Untuk singkatnya, saya hanya menunjukkan hasil dari metode Void dan cluster. [ Peters] Noise gradien yang disisipkan bekerja lebih baik daripada Bayer dan noise biru, tetapi tidak sebagusRdithering. Anda dapat melihat bahwa Bayer dithering menunjukkan disonansi putih yang terlihat jelas di area abu-abu terang. DitheringR- Urutan dan noise biru umumnya sebanding, meskipun perbedaan kecil dapat dibuat. Perlu dicatat beberapa aspek dari R-dithering:

  • Dia bukan isotropik! Spektrum Fourier hanya menunjukkan titik-titik individual dan diskrit. Ini adalah fitur klasik dari tasi quasi periodik dan spektra difraksi kristal quasicry. Secara khusus, spektrum Fourier untukR -masus sesuai dengan fakta bahwa triangulasi Delaunay untuk sekuens R-kanonik terdiri dari ubin kuasi periodik dari tiga jajar genjang.
  • R-dithering saat dikombinasikan dengan gelombang segitiga memberikan topeng yang sangat seragam!
  • R- , .
  • , , R- , .
  • (I(x,y) , .


Gambar 11. Dari kiri ke kanan: (i) Gambar asli (ii) R-sequence dikombinasikan dengan fungsi gelombang segitiga; (iii) urutan R terpisah; (iv) topeng dithering kebisingan biru, dan (v) Bayer standar. Masker dithering R-sequence cukup kompetitif terhadap topeng modern lainnya. Perhatikan bahwa R2 menunjukkan kualitas terbaik pada wajah dan pundak Lena. Selain itu, tidak seperti topeng noise biru, R-mask dithering sangat sederhana sehingga tidak memerlukan perhitungan awal.

Dimensi yang lebih tinggi


Mirip dengan bagian sebelumnya, tetapi untuk lima (5) pengukuran, grafik di bawah ini menunjukkan jarak minimum (global) antara dua titik untuk R(ϕ5)-afterences, (2,3,5,7,11) -Holton dan urutan acak. Kali ini, nilai normal jarak minimum dinormalisasi oleh faktor1/5n . Dapat dilihat bahwa karena "kutukan dimensi", distribusi acak lebih baik daripada semua urutan dengan divergensi rendah - dengan pengecualian R5- selanjutnya. MasukR(ϕ5) -setelah bahkan dengan n106 poin, jarak minimum antara dua titik masih terus dekat 0.8/n dan selalu lebih tinggi 0.631/n .

Urutan R2 - satu-satunya d - Urutan dimensi dengan divergensi rendah, di mana jarak pengemasan mulai turun hanya dengan kecepatan n1/d .


Gambar 12. Ini menunjukkan bahwa urutan R (biru) secara konsisten lebih baik daripada Holton (oranye); Sable (hijau); Niederreiter (merah); dan acak (ungu). Perlu diingat bahwa semakin besar semakin baik, karena ini sesuai dengan jarak pengepakan yang lebih lama.

Integrasi numerik


Grafik berikut menunjukkan kurva kesalahan khas. sn=|AAn| untuk memperkirakan integral tertentu yang terkait dengan fungsi Gaussian setengah lebar σ=d , f(x)=exp(x22d),x[0,1] , sementara: (i) Rϕ(biru); (ii) Urutan Holton (oranye); (iii) acak (hijau); (iv) Sable (merah). Grafik menunjukkan bahwa untukn=106sekarang ada lebih sedikit perbedaan antara pengambilan sampel acak dan urutan Holton. Namun, seperti yang ditunjukkan dalam kasus satu dimensi,R- Urutan dan Sable selalu lebih baik daripada urutan Holton. Ini juga memberi tahu kami bahwa urutan Sable sedikit lebih baik.R - selanjutnya.


Gambar 13. Metode acak semu Monte Carlo untuk integrasi 8 dimensi. Semakin rendah nilainya, semakin baik. Urutan R-baru dan urutan Sable menunjukkan diri mereka jauh lebih baik daripada urutan Holton.

Source: https://habr.com/ru/post/id440892/


All Articles