İlk sorum şu arkadaslar: Mahallede bulunan 10 tane evin koordinatları verilmiştir. Bu mahallede doğalgaz dağıtım merkezi kurulması düşünülmektedir. Bu merkezden tüm evlere çekilecek doğalgaz hatlarının toplam uzunluğunun en az olması için bu merkezin nerede kurulacağını hesaplayın.
İkinci sorum şu: Bir önceki problemde kurulacak merkez sayısı iki olduğunda yerlerini hesaplayın.
Benim ilkine düşündüğüm çözüm: (Dizilerle yapmayı çalıştım az kod olması açısından ama beceremedim)
#include <stdio.h> #include <conio.h>
main() { int x1=3,y1=5; int x2=7,y2=8; int x3=4,y3=1; int x4=9,y4=3; int x5=6,y5=2; int x6=13,y6=4; int x7=2,y7=12; int x8=3,y8=4; int x9=16,y9=12; int x10=7,y10=18;
int koordinatx=(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)/10; int koordinaty=(y1+y2+y3+y4+y5+y6+y7+y8+y9+y10)/10;
printf("Merkezin kurulmasi icin en uygun koordinatlar: %d,%d",koordinatx,koordinaty);
getch(); }
İkinci soru için yaptığım çözüm ise bu: (Ama emin değilim, sanırım birbirine en yakın sıralı ikili 5 koordinatı bulup oraya bir merkez kurdurtup diğer kalan sıralı ikili 5 koordinatada ayrı bir merkez kurulmasını ayarlamalıyım fakat birbirine en yakın 5 koordinatı nasıl bulduracağımı düşünemedim.)
#include <stdio.h> #include <conio.h>
main() { int x1=3,y1=5; int x2=7,y2=8; int x3=4,y3=1; int x4=9,y4=3; int x5=6,y5=2; int x6=13,y6=4; int x7=2,y7=12; int x8=3,y8=4; int x9=16,y9=12; int x10=7,y10=18;
int koordinat1x=(x1+x2+x3+x4+x5)/5; int koordinat1y=(y1+y2+y3+y4+y5)/5;
int koordinat2x=(x6+x7+x8+x9+x10)/5; int koordinat2y=(y6+y7+y8+y9+y10)/5;
printf("1. Merkezin kurulmasi icin en uygun koordinatlar: %d,%d\n",koordinat1x,koordinat1y); printf("2. Merkezin kurulmasi icin en uygun koordinatlar: %d,%d",koordinat2x,koordinat2y);
getch(); }
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
Ortalama almak kadar basit bir problem gibi görünmüyor. Euclid mesafeleri toplamını minimum yapmak ile mesafenin kareleri toplamını minimum yapmak aynı değil.
ikinci durumda (a1 - x1)^2 + ... (a1-x10)^2 değerini minimum yapmaya çalışıyoruz ve cevap a1 = (x1 + x2 + ... x10)/10 oluyor. ama Euclid mesafesi daha karışık. kök olduğu için türevi sıfıra eşitleyip çözmek biraz daha zorlaşıyor.
İnternette biraz arama yaptıktan sonra bunun Weber Problemi diye geçtiğini gördüm.
Geometrik Median algoritmaları genel anlamda bunları hesaplıyor ama dediğim gibi ortalama almak kadar kolay değil. Yöntemlerden bir tanesi Weiszfeld's Algorithm diye geçiyor. Ben de detaylı incelemedim. Merak ettim ama, bir bakacağım.
İkinci sorum şu: Bir önceki problemde kurulacak merkez sayısı iki olduğunda yerlerini hesaplayın.
Benim ilkine düşündüğüm çözüm: (Dizilerle yapmayı çalıştım az kod olması açısından ama beceremedim)
İkinci soru için yaptığım çözüm ise bu: (Ama emin değilim, sanırım birbirine en yakın sıralı ikili 5 koordinatı bulup oraya bir merkez kurdurtup diğer kalan sıralı ikili 5 koordinatada ayrı bir merkez kurulmasını ayarlamalıyım fakat birbirine en yakın 5 koordinatı nasıl bulduracağımı düşünemedim.)
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.