শক্তিগুলির মধ্যে দূরত্ব গণনা করার জন্য অ্যালগরিদম


9

দেওয়া হয়েছে কপিরাইট a,b, আপনি দ্রুত গণনা করতে পারেন

minx,y>0|axby|

এখানে x,y হল পূর্ণসংখ্যা। স্পষ্টতই x=y=0 একটি উদ্বেগজনক উত্তর দেয়; সাধারণভাবে এই ক্ষমতাগুলি কতটা কাছাকাছি আসতে পারে? এছাড়াও, আমরা কীভাবে দ্রুত নূন্যতম x, y গণনা করব x,y?


6
আপনি কি জানেন যে এটি এমনকি গণনাযোগ্য?

1
যদি আপনি x স্থির করেন x, এটি মিনিমাইজারের জন্য এটি সহজেই দেখাতে সহজ, y{xlogalogb,xlogalogb} । এটি একে এক-মাত্রিক অনুসন্ধানে হ্রাস করে।
থমাস

5
দয়া করে একযোগে ক্রস পোস্ট করবেন না, বা কমপক্ষে অন্যান্য পোস্টের লিঙ্ক করুন। mathoverflow.net/questions/283903/…
usul

উত্তর:


-2

প্রথমে আমি ভেবেছিলাম এর অব্যাহত ভগ্নাংশটি ব্যবহার করা এবং এর রূপান্তরগুলিতে পরীক্ষা করা ভাল হবে, কারণ সেই ধরণের অভিজাতগুলিতে কিছুটা অনুকূল সান্নিধ্যের বিন্দু রয়েছে। এর পরে এটি স্পষ্ট হয়ে যায়, একচেটিয়া হ্রাসকারী দূরত্ব নিশ্চিত করার জন্য একজনকে কমপক্ষে সাধারণীকৃত অবিরত ভগ্নাংশগুলি ব্যবহার করা উচিত। এর পরে এবং নিম্নলিখিত জন্তু-শক্তি অ্যালগো সহ জটিল অ্যালগরিদম পরী / জিপি-তে আরও দ্রুত ছিলlog(a)/log(b)(x,y)

\\ print X,Y,d conditional X>lowboundX, Y > lowboundY, d<upperboundD
{pri1(lbX,lbY,ubd,a,b,X,Y,d)=if(X<lbX || Y<lbY || abs(d)>ubd,return(0)); 
                  print(a,"^",X,"-",b,"^",Y,"=",d)); }


{mylist(maxa=19,maxb=99,lbX=3,lbY=2,ubd=100)=print(" ");
for(a=2,maxa,for(b=a+1,maxb,
     if(gcd(a,b)>1,next()); \\ ignore trivial multiples
     X=1;Y=1;Xa=a;Yb=b;
     d=Xa-Yb;  pri1(lbX,lbY,ubd,a,b,X,Y,d);
     for(k=1,20, 
        while(d<0,Xa*=a;d=Xa-Yb;X++;pri1(lbX,lbY,ubd,a,b,X,Y,d););
        while(d>0,Nb*=b;d=Xa-Yb;Y++;pri1(lbX,lbY,ubd,a,b,X,Y,d););
        if(X>30 || Y>20, break());  \\ stop at max X=30 or Y=20 
       );
   )); }

এর পরেmylist(100,1000,3,3,100) সাথে সমস্ত ছোট পার্থক্য সন্ধান করতে যেখানে উভয় প্রকাশক সকল ঘাঁটির জন্য কমপক্ষে এবং । কেবল পরীক্ষা করুন এবং । |d|<1003a=2..100b=(a+1)..1000max(X)=30max(y)=20

এটি অবিরত-ভগ্নাংশের পদ্ধতির চেয়ে অনেক দ্রুত ছিল (এতে আরও কুরুচিপূর্ণ সমস্যা ছিল (উদাহরণস্বরূপ সমাধানগুলির সম্পূর্ণতা সহ) যা পরিচালনা করা কঠিন) যদিও এটি কোনওরকম নিষ্পাপ আলগো ...

একটি প্রোটোকল (ম্যানুয়ালি অর্ডার করা):

gettime();mylist(200,10 000,3,3,100);gettime() /1000.0 \\ ~ a*b/6000 sec
  (400 sec)

 2^8- 3^5= 13

 6^7-23^4= 95
 2^7- 3^4= 47

 2^7- 5^3=  3
 2^5- 3^3=  5
 3^4- 4^3= 17

---------------
 2^6- 3^4=-17

 3^5- 4^4=-13
 2^5- 3^4=-49

 2^8- 7^3=-87
(4^4- 7^3=-87)

 3^7-13^3=-10
 2^6- 5^3=-61
(4^3- 5^3=-61)
 2^5- 5^3=-93

 2^4- 3^3=-11
 3^4- 5^3=-44
 6^4-11^3=-35
15^4-37^3=-28

 3^3- 4^3=-37
 3^3- 5^3=-98
 5^3- 6^3=-91
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.