शक्तियों के बीच दूरी की गणना करने के लिए एल्गोरिदम


9

Coprime को देखते हुए , कर सकते हैं आप जल्दी से गणना,

मिनटएक्स,y>0|एक्स-y|

यहाँ पूर्णांक हैं। स्पष्ट रूप से लेने से एक निर्बाध उत्तर मिलता है; सामान्य तौर पर ये शक्तियां कितनी पास हो सकती हैं? इसके अलावा, हम न्यूनतम गणना कैसे करते हैं ?एक्स,yएक्स=y=0एक्स,y


6
क्या आप जानते हैं कि यह भी कम्प्यूटेशनल है?

1
यदि आप ठीक करते हैं , तो यह दिखाना आसान है, कि मिनिमाइज़र के लिए, । यह इसे एक आयामी खोज में कम कर देता है। एक्सy{एक्सलॉगलॉग,एक्सलॉगलॉग}
थॉमस

5
कृपया साथ-साथ क्रॉस-पोस्ट, या कम से कम अन्य पोस्ट (लिंक) पर लिंक न करें। mathoverflow.net/questions/283903/…
usul

जवाबों:


-2

पहले मैंने सोचा था कि इसके कन्वर्टर्स पर और परीक्षण के निरंतर अंश का उपयोग करना सबसे अच्छा होगा , क्योंकि उस कनवर्जेन्स में कुछ अर्थों में इष्टतम अर्थ हैं। उसके बाद यह स्पष्ट हो जाता है, कि कम से कम सामान्यीकृत निरंतर अंशों का उपयोग करने की आवश्यकता है ताकि मोनोटोनिक की घटती दूरियों को सुनिश्चित किया जा सके। उसके बाद और इस के साथ जटिल एल्गोरिथ्म निम्नलिखित जानवर बल algo भी Pari / GP में तेज थालॉग()/लॉग()(एक्स,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)सभी छोटे अंतर को खोजने के लिए कॉल करें जहां दोनों सभी ठिकानों के लिए कम से कम हैं और । केवल और । ||<1003=2..100=(+1)1000अधिकतम(एक्स)=30अधिकतम(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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.