Voronoi Diyagramları ve Python

Voronoi Diyagramları kullanım alanı çok geniş olabilecek bir konu. Wikipedia'da sanatsal işlerde kullanıldığı bile yazıyor. Benim şimdiye kadar tek kullandığım ve gayet işime yarayan kullanımı ise olasılık dağılımlarının gösterimi.

Belirli bir olasılık dağılımından rastgele nokta üreterek çalışan yöntemlerde (sample based) her dağılım kullanışlı olmayabiliyor. Robot hareketinde rastgele olarak yolu bulmaya çalışırken bu rastgeleliğin yarı-rastgele (quasi-random) olmasını sağlamaya çalışıyoruz. Hareket için uniform dağılım kullanacak olursak Voronoi diyagramı aşağıdaki gibi oluyor;

uniform_voronoi

Bu grafik bize 2 şeyi gösterebilir; birincisi sol alttaki gibi sıkışık alanlar oluşabilir, örnek sayımız sınırlı olduğunda buralarda takılıp kalabiliriz. İkincisi ise üst taraflardaki gibi büyük Voronoi hücreleri oluşabilir. Hücre ne kadar büyükse o noktaya yakın bir başka nokta da o kadar uzak demek, dolayısıyla nokta ulaşılabilir olmayabilir.

Üstteki grafiği de Python'da çizdirdim. Scipy + matplotlib ile uniform dağılımın Voronoi diyagramını oluşturmak için çok fazla kod yazmaya gerek kalmadı;