मुझे कई एल्गोरिथम समस्याएं दिखाई देती हैं जो हमेशा कुछ को कम करती हैं:
आप एक है पूर्णांक सरणीज[1 ..n]≥0
जाहिर है हे(n2)
मुझे लगा कि एक विचार को ठीक करना है जे
हालाँकि, मुझे इससे छुटकारा पाने का कोई रास्ता नहीं दिख रहा है जे
मुझे कई एल्गोरिथम समस्याएं दिखाई देती हैं जो हमेशा कुछ को कम करती हैं:
आप एक है पूर्णांक सरणीज[1 ..n]≥0
जाहिर है हे(n2)
मुझे लगा कि एक विचार को ठीक करना है जे
हालाँकि, मुझे इससे छुटकारा पाने का कोई रास्ता नहीं दिख रहा है जे
जवाबों:
यह एक हे(nलॉगn)
convience के लिए, निरूपित च(मैं,जे)=(ज[जे]-ज[मैं])(जे-मैं)
परिभाषित करें एल1=1
मामला जहां नहीं हैं मैं<जे
प्रत्येक के लिए मैं<जे
निरूपित v(यू)=आर्गअधिकतमv: एलयू<आरvच(एलयू,आरv)
एक जोड़ा (एलयू,आरv)
(lu,rv) कहाँ पे एलयू<आरvlu<rv , और जहाँ मौजूद है यू0u0 ऐसा है कि यू<यू0u<u0 तथा v<v(यू0)v<v(u0) या ऐसा यू>यू0u>u0 तथा v>v(यू0)v>v(u0) , एक अंतिम इष्टतम समाधान नहीं हो सकता है।सबूत। की परिभाषा के अनुसारv(यू0)
v(u0) , हमारे पास है (ज[आरv(यू0)]-ज[एलयू0])(आरv(यू0)-एलयू0)≥(ज[आरv]-ज[एलयू0])(आरv-एलयू0),या (ज[आरv]-ज[आरv(यू0)])एलयू0+ज[एलयू0](आरv-आरv(यू0))+ज[आरv(यू0)]आरv(यू0)-ज[आरv]आरv(यू0)≥0।(h[rv(u0)]−h[lu0])(rv(u0)−lu0)≥(h[rv]−h[lu0])(rv−lu0), (h[rv]−h[rv(u0)])lu0+h[lu0](rv−rv(u0))+h[rv(u0)]rv(u0)−h[rv]rv(u0)≥0. In the case where u<u0
u<u0 and v<v(u0)v<v(u0) , note h[rv]−h[rv(u0)]<0h[rv]−h[rv(u0)]<0 and rv−rv(u0)>0rv−rv(u0)>0 , and also lu<lu0lu<lu0 and h[lu]>h[lu0]h[lu]>h[lu0] , we have (h[rv]−h[rv(u0)])lu+h[lu](rv−rv(u0))> (h[rv]−h[rv(u0)])lu0+h[lu0](rv−rv(u0)).> (h[rv]−h[rv(u0)])lu+h[lu](rv−rv(u0))(h[rv]−h[rv(u0)])lu0+h[lu0](rv−rv(u0)). This means (h[rv]−h[rv(u0)])lu+h[lu](rv−rv(u0))+h[rv(u0)]rv(u0)−h[rv]rv(u0)>0,
or (h[rv(u0)]−h[lu])(rv(u0)−lu)>(h[rv]−h[lu])(rv−lu).(h[rv]−h[rv(u0)])lu+h[lu](rv−rv(u0))+h[rv(u0)]rv(u0)−h[rv]rv(u0)>0, (h[rv(u0)]−h[lu])(rv(u0)−lu)>(h[rv]−h[lu])(rv−lu). So (lu,rv(u0))
(lu,rv(u0)) is a strictly better solution than (lu,rv)(lu,rv) . Proof for the other case is similar. ◼■
We can compute v(ℓ/2)
Let f(lu,rv)=−∞