შემთხვევითი ძიების ალგორითმი არის ძიების მეთოდი, რომელიც ეფუძნება საძიებო სივრციდან გადაწყვეტილებების ნაკრების შემთხვევით არჩევას და შემოწმებას, შეუძლიათ თუ არა მათ პრობლემის გადაჭრა. ეს მიდგომა ხშირად გამოიყენება, როდესაც არ არსებობს კონკრეტული ინფორმაცია ან სტრატეგია, რომელიც ხელმძღვანელობს ძიებას.
Როგორ მუშაობს
- ინიციალიზაცია: დაიწყეთ საწყისი გადაწყვეტილებების შემთხვევით გენერირებული ნაკრებით.
- შეფასება: შეაფასეთ თითოეული გადაწყვეტის ხარისხი ობიექტური ფუნქციის ან შეფასების კრიტერიუმების საფუძველზე.
- შერჩევა: აირჩიეთ საუკეთესო გადაწყვეტილებების ქვეჯგუფი ნაკრებიდან ალბათობების ან შემთხვევითი შერჩევის საფუძველზე.
- ტესტირება: შეამოწმეთ, შეუძლია თუ არა შერჩეულ გადაწყვეტილებებს პრობლემის გადაჭრა.
- გაიმეორეთ: გაიმეორეთ ნაბიჯები 2-დან 4-მდე, სანამ დამაკმაყოფილებელი შედეგი არ იქნება მიღწეული ან გამეორებების წინასწარ განსაზღვრული რაოდენობა.
მაგალითი: Fibonacci ფუნქციის ოპტიმიზაცია
განვიხილოთ F(x) = F(x-1) + F(x-2) ფუნქციის ოპტიმიზაციის ამოცანა Fibonacci F(0) = 0, F(1) = 1. ჩვენ გვინდა ვიპოვოთ x-ის მნიშვნელობა, რომლისთვისაც F(x) არის მაქსიმალური. შემთხვევითი ძიების მეთოდს შეუძლია შემთხვევით შეარჩიოს x-ის მნიშვნელობები, გამოთვალოს მნიშვნელობა Fibonacci თითოეულ x-ზე და აირჩიოს x-ის მნიშვნელობა, რომელიც შეესაბამება Fibonacci მიღებულ უმაღლეს მნიშვნელობას.
კოდის მაგალითი C++-ში
#include <iostream>
#include <cstdlib>
#include <ctime>
int fibonacci(int n) {
if(n <= 0) return 0;
if(n == 1) return 1;
return fibonacci(n- 1) + fibonacci(n- 2);
}
int randomSearchFibonacci(int maxIterations) {
int bestX = 0;
int bestValue = 0;
srand(time(0));
for(int i = 0; i < maxIterations; ++i) {
int x = rand() % maxIterations;
int value = fibonacci(x);
if(value > bestValue) {
bestValue = value;
bestX = x;
}
}
return bestX;
}
int main() {
int maxIterations = 20;
int result = randomSearchFibonacci(maxIterations);
std::cout << "Optimal x for maximum Fibonacci value: " << result << std::endl;
return 0;
}
ამ მაგალითში, ჩვენ ვიყენებთ შემთხვევითი ძიების მეთოდს ფუნქციის ოპტიმიზაციისთვის Fibonacci. ჩვენ შემთხვევით ვირჩევთ x-ის მნიშვნელობებს, ვიანგარიშებთ მნიშვნელობას თითოეულ x-ზე და შემდეგ ვირჩევთ x-ის მნიშვნელობას, რომელიც შეესაბამება ჩვენს მიერ გამოთვლილ Fibonacci უმაღლეს მნიშვნელობას. Fibonacci