CodeGym /Kurslar /Python SELF AZ /Sadə metodlar

Sadə metodlar

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1.1 Sadə metodların tərifi

Sadə metodlar (birbaşa həll) — bu, məsələləri həll etmək üçün sadə, düz yanaşmalardır ki, çox vaxt vaxt və ya yaddaş baxımından optimallaşdırılmayıb. Onlar mürəkkəb optimizasiyaları nəzərə almayan əsas, aydın addımlara əsaslanır.

Belə metodlar problemi ilkin olaraq anlamaq və ya daha mürəkkəb alqoritmlərlə müqayisə üçün baza variantı kimi faydalı ola bilər.

Üstünlüklər:

1. Reallaşdırma asanlığı:

Sadə metodlar çox vaxt başa düşmək və reallaşdırmaq baxımından asan olur ki, bu da onları məsələnin həlli üçün yaxşı başlanğıc nöqtəsi edir.

2. Anlaşıqlı olması:

Bu metodlar birbaşa yanaşmaya əsaslanır ki, bu da onları asanlıqla izah edilə bilən və yeni başlayanlar üçün anlaşıqlı edir.

3. İlkin qiymətləndirmə:

Onlar daha mürəkkəb və optimallaşdırılmış alqoritmlərlə müqayisə üçün baza variantı kimi istifadə edilə bilər.

Çatışmazlıqlar:

1. Aşağı performans:

Sadə metodlar çox vaxt yüksək vaxt mürəkkəbliyinə malikdir ki, bu da onları böyük məlumatlarla işləmək üçün yararsız edir.

2. Effektivsizlik:

Optimallaşdırmaların olmamasına görə lazım olduğundan daha çox resurs istifadə edə bilərlər.

3. Məhdud tətbiq sahəsi:

Bu metodlar mürəkkəb məsələlər və ya yüksək effektiv həllər tələb edən məsələlər üçün qeyri-praktik ola bilər.

1.2 Sadə məsələlərin nümunələri

Sadə metodlarla həll olunan məsələlər:

Ədədin sadəliyini yoxlama:

Sadə metod ədədin 2-dən n-1-ə qədər olan bütün ədədlərə bölünüb-bölünmədiyini yoxlamaqdan ibarətdir.


def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

# İstifadə nümunəsi:
number = 29
print(is_prime(number))  # Çıxış: True

Ən böyük ümumi bölən (ƏBÜB) hesablanması:

Sadə metod iki ədədin minimumundan başlayıb 1-ə qədər bütün ədədləri yoxlamaq və ən böyük böləni tapmaqdan ibarətdir.


def gcd_naive(a, b):
    gcd = 1
    for i in range(1, min(a, b) + 1):
        if a % i == 0 and b % i == 0:
            gcd = i
    return gcd

# İstifadə nümunəsi:
a = 48
b = 18
print(gcd_naive(a, b))  # Çıxış: 6

1.3 Daha çətin problemlər üçün nümunələr

Sətir daxilində alt-sətirin tapılması:

Sadə metod sətirdəki hər bir mümkün mövqeyi ardıcıl olaraq yoxlamaqdan ibarətdir.


def naive_search(text, pattern):
    n = len(text)
    m = len(pattern)
    for i in range(n - m + 1):
        match = True
        for j in range(m):
            if text[i + j] != pattern[j]:
                match = False
                break
        if match:
            return i
    return -1

# İstifadə nümunəsi:
text = "hello world"
pattern = "world"
print(naive_search(text, pattern))  # Çıxış: 6

Ən yaxın nöqtələr cütünü tapmaq:

Sadə metod hər bir nöqtə cütü arasındakı məsafəni yoxlamaq və minimal məsafəni tapmaqdan ibarətdir.


import math

def closest_pair_naive(points):
    min_distance = float('inf')
    closest_pair = None
    n = len(points)
    for i in range(n):
        for j in range(i + 1, n):
            distance = math.dist(points[i], points[j])
            if distance < min_distance:
                min_distance = distance
                closest_pair = (points[i], points[j])
    return closest_pair, min_distance

# İstifadə nümunəsi:
points = [(1, 2), (3, 4), (5, 6), (7, 8)]
print(closest_pair_naive(points))  # Çıxış: ((1, 2), (3, 4)), 2.8284271247461903

Bütün bu alqoritmləri təkmilləşdirmək olar, amma bir şeyi təkmilləşdirməzdən əvvəl — sadə həlli yazın. Ola bilər ki, əgər bu həll sizdə bir və ya iki dəfə işləyirsə — bu yetərli olacaq.

Nə qədər sadə həll olarsa, o qədər az səhv və gizli problemlər olur. Sadə həllə yeni funksionallıq əlavə etmək asandır. Bu kodu oxumaq və anlamaq da asandır. Vaxtından əvvəl optimallaşdırma isə bütün problemlərin mənbəyidir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION