Basecamp
    Ana Səhifə
    Problemlər
    Müsabiqələr
    Kurslar
    Reytinq
    Postlar
    Mağaza
    Discord
Silinmələr ilə XOR əsası
Daxil ol
denisovkostya
•Article•12 ay öncə

Silinmələr ilə XOR əsası

Ön söz

Bu məqalədə xətti cəbrdən terminlər istifadə olunur. Əgər bu terminləri başa düşürsünüzsə, bu bölməni keçə bilərsiniz.

0 (daxildir) ilə 2m (daxil deyil) arasında olan bir tam ədədi onun ikili təqdimatını nəzərə alaraq m ölçülü vektor kimi düşünmək olar. xor (istisna YAXUD) əməliyyatı hər bir elementi 2 modulu üzrə toplamağa uyğundur və tam ədədlər çoxluğundan müəyyən elementləri seçərək onların xor-unu hesablayaraq vektorları 0 və ya 1 ilə vurmaq və onları 2 modulu üzrə toplamağa uyğun gəlir. Bir neçə skalyar vurmanın və vektorların cəmi xətti kombinasiyadır.

span(X), X çoxluğunun bəzi elementlərinin mümkün bütün xor-larının çoxluğunu göstərir. Məsələn, span({1,2,4})={0,1,2,4,1⊕2,1⊕4,2⊕4,1⊕2⊕4}={0,1,2,3,4,5,6,7} (boş çoxluğun xor-u 0-a bərabərdir).

Giriş

Qeyd

Məqalədə bütün tam ədədlərin [0,2m) intervalında olduğunu nəzərdə tuturuq.

Gəlin aşağıdakı yaxşı bilinən problemi xatırlayaq:

Problem

Aşağıdakı tipdə q sorğu verilib:

  • Boş çoxluqdan başlayaraq, S çoxluğuna tam ədəd x əlavə et.

Hər bir sorğudan sonra, cari S çoxluğunun ixtiyari bir XOR əsasının ölçüsünü qaytarmaq lazımdır.

S çoxluğunun XOR əsası, X çoxluğunun ən kiçik alt çoxluğudur ki, bu çoxluğun tam ədədləri ilə istənilən y∈S ədədini xor vasitəsilə ifadə etmək mümkündür.

Bu problemi necə həll etməyi buradan öyrənə bilərsiniz.

Bu məqalədə isə, S çoxluğundan tam ədədlərin silinmə sorğularının da olduğu daha mürəkkəb bir problemi nəzərdən keçirəcəyik. Üstəlik, növbəti sorğunu yalnız əvvəlki sorğuya cavab verdikdən sonra alırıq (yəni, problem "onlayn" həll edilməlidir).

Başlanğıc problemi hər bir sorğu üçün O(m) zaman sərfində həll etmək mümkündür, lakin biz silinmələr olan problemi O(m2) zaman sərfində həll etməyi öyrənəcəyik.

Struktur

Silinmələrlə olan problemdə, əlavə etdiyimiz tam ədədin mövcud əsas elementlərinin xor-u ilə ifadə olunması qeyri-müəyyənlik yaradır.

S-ə əlavə olunan hər bir tam ədədi effektiv şəkildə saxlamaq istəyirik, buna görə də tək bir əsası deyil, hər biri əvvəlcə boş olan, XOR əsaslarının ardıcıllığını Xn​ (n≥1) saxlayacağıq.

v tam ədədini S-ə əlavə etmək

Gəlin v=0 yeni tam ədədini S çoxluğuna necə əlavə edəcəyimizi nəzərdən keçirək:

  1. İlk əsasdan başlayaraq ardıcıllıqları tədricən nəzərdən keçirəcəyik. Gəlin i-ni cari nəzərdən keçirdiyimiz əsasın tam ədədi adlandıraq;

  2. Əgər v∈/span(Xi​), sadəcə v-i Xi​-yə əlavə edirik və proseduru bitiririk;

  3. Əks halda, v∈span(Xi​), bu halda onu əsasa əlavə edə bilmərik, lakin bu tam ədədi haradasa saxlamaq istəyirik. Bu səbəbdən i-ni 1 vahid artırıb addım 2-yə qayıdırıq.

Başqa sözlə, v∈/span(Xi​) olan minimal i-ni tapırıq və v-i Xi​-yə əlavə edirik. Əgər bu alqoritmi birbaşa tətbiq etsək, ən pis halda o, O(∣S∣) zaman sərfində işləyəcək ki, bu da olduqca səmərəsizdir.

Bu alqoritmi təkmilləşdirəcəyik. İlk növbədə, Xn​ ardıcıllığının bəzi xüsusiyyətlərini nəzərdən keçirək:

Xassə 1

span(Xi​)⊇span(Xi+1​) hər bir i≥1 üçün doğrudur.

Qalan tərcümə də bu tərzdə davam etdirilə bilər. Hər bir texniki termin və mətnin formatı dəyişdirilmədən qorunmalıdır ki, oxucu orijinal məqalənin strukturu və məntiqi ilə asanlıqla tanış olsun.


36

Şərhlər (2)

Yüklənir

Bir an, serverdən məlumat alınır
user429879•27 gün öncə

👍🏻

0
SANYAAAAAAAAAAAAA•6 ay öncə•2-ci təftiş

Is it possible to get size of set of integers that belong to a span of at least one basis, several basises given

0