Kanuni ya Utafutaji wa Ndani ni mbinu ya kutafuta suluhu bora ndani ya eneo la hali ya sasa. Mbinu hii mara nyingi hutumiwa kuboresha takriban suluhu kwa kurekebisha vipengele vya mtu binafsi mara kwa mara ili kugundua hali bora zaidi.
Inavyofanya kazi
- Uanzishaji: Anza na hali ya awali.
- Tengeneza Majirani: Tengeneza majimbo jirani kwa kubadilisha kijenzi cha hali ya sasa.
- Tathmini: Tathmini ubora wa majimbo jirani kwa kutumia kipengele cha kukokotoa.
- Chagua Jimbo Bora: Chagua jimbo jirani na thamani bora ya lengo.
- Rudia: Rudia kupitia hatua ya 2 hadi 4 hadi hakuna jimbo bora jirani linaloweza kupatikana.
Mfano: Kuboresha Fibonacci Kazi
Fikiria tatizo la uboreshaji la Fibonacci chaguo za kukokotoa F(x) = F(x-1) + F(x-2) pamoja na F(0) = 0, F(1) = 1. Tunataka kupata thamani ya x ambayo kwayo F(x) imekuzwa. Tunaweza kutumia mbinu ya Utafutaji wa Ndani ili kuchunguza mara kwa mara mbali na kila hatua.
Mfano wa Msimbo katika C++
#include <iostream>
int fibonacci(int n) {
if(n <= 0) return 0;
if(n == 1) return 1;
return fibonacci(n- 1) + fibonacci(n- 2);
}
int localSearchFibonacci(int maxIterations) {
int bestX = 0;
int bestValue = 0;
for(int x = 0; x < maxIterations; ++x) {
int value = fibonacci(x);
if(value > bestValue) {
bestValue = value;
bestX = x;
}
}
return bestX;
}
int main() {
int maxIterations = 20;
int result = localSearchFibonacci(maxIterations);
std::cout << "Optimal x for maximum Fibonacci value: " << result << std::endl;
return 0;
}
Katika mfano huu, tunatumia mbinu ya Utafutaji wa Ndani ili kuboresha Fibonacci utendakazi. Tunarudia kupitia thamani tofauti za x na kukokotoa Fibonacci thamani katika kila x. Thamani bora inapopatikana, tunasasisha thamani bora na sambamba yake x.