Beregningskompleksitetsteori er et grundlæggende område inden for teoretisk datalogi, der grundigt undersøger de ressourcer, der kræves for at løse beregningsproblemer. En præcis forståelse af dens formalisme kræver kendskab til adskillige centrale matematiske definitioner, notationer og konceptuelle rammer. Disse giver det sprog og de værktøjer, der er nødvendige for at formulere, analysere og sammenligne problemers beregningsmæssige sværhedsgrad og algoritmers effektivitet.
1. Mængder, funktioner og relationer
sæt
En mængde er en veldefineret samling af forskellige objekter, kaldet elementer. I kompleksitetsteori repræsenterer mængder ofte samlinger af strenge, tal eller tilstande. Standardnotationen for en mængde er store bogstaver, såsom or
. For eksempel,
betegner almindeligvis et alfabet - et endeligt sæt af symboler.
- Eksempel: If , så er mængden af alle binære strenge med længde 3
.
Funktioner
En funktion tildeler til hvert element
præcis ét element
Funktioner er grundlæggende for at beskrive algoritmer, transformationer og kompleksitetsmål.
- Eksempel: funktionen afbilder naturlige tal til deres respektive potenser af to.
forbindelser
En relation er en delmængde af det kartesiske produkt af mængder
og
I forbindelse med sprog og beslutningsproblemer beskriver relationer ofte kortlægningen mellem input og deres tilhørende output eller certifikater.
2. Alfabeter, strenge og sprog
Alfabet og strenge
Et alfabet er et endeligt, ikke-tomt sæt af symboler. En streng over
er en endelig sekvens af symboler fra
Sættet af alle strenge over
er betegnet
Hvor
repræsenterer Kleene-stjerneoperationen.
- Eksempel: Til ,
er en streng i
.
Other languages
Et sprog i løbet af
er en hvilken som helst delmængde af
I beregningskompleksitet repræsenterer sprog beslutningsproblemer: for en streng
, spørgsmålet er, om
.
- Eksempel: Sproget indeholder et lige antal nuller
.
3. Beslutningsproblemer og beregningsmodeller
Beslutningsproblemer
Et beslutningsproblem stiller et ja/nej-spørgsmål om et input. Formelt set svarer det til et sprog : "Givet
, er
? "
- Eksempel: "Givet en graf , gør
har en Hamilton-cyklus?" er et beslutningsproblem.
Beregningsmodeller
Kompleksitetsteori formaliserer beregning ved hjælp af abstrakte maskiner. Den mest fremtrædende er Turingmaskinen.
- Turing-maskinen (TM): En abstrakt model defineret af et endeligt sæt af tilstande, et uendeligt bånd opdelt i celler, et båndhoved og en overgangsfunktion. En deterministisk Turing-maskine (DTM) har en enkelt overgang for hvert tilstandssymbolpar; en ikke-deterministisk Turing-maskine (NTM) kan have flere overgange.
4. Asymptotisk notation
Asymptotisk notation beskriver funktioners begrænsende adfærd, som er vigtig for at udtrykke ressourceforbruget (tid, rum) af algoritmer, når inputstørrelsen vokser.
Stor O-notation
- Definition: hvis der findes konstanter
og
sådan at for alle
,
.
- fortolkning: vokser ikke hurtigere end
op til konstante multipler for store
.
- Eksempel: .
Omega- og Theta-notationer
- Stor Omega ():
hvis for nogle
,
for alle
.
- Stor Theta ():
if
og
.
Disse notationer muliggør formel sammenligning af algoritmisk effektivitet.
5. Kompleksitetsmål
Tidskompleksitet
Beskriver antallet af beregningstrin (f.eks. overgange i en Turing-maskine), der kræves som funktion af inputstørrelsen. .
- Bedømmelse: or
for tid taget på input af længde
.
Rumkompleksitet
Beskriver mængden af hukommelse (brugte båndceller) som en funktion af inputstørrelse.
- Bedømmelse: .
Ressourcegrænserne betragtes typisk i asymptotisk forstand for store inputstørrelser.
6. Kompleksitetsklasser
Kompleksitetklasser grupperer sprog (problemer) i henhold til de ressourcer, der er nødvendige for at afgøre dem.
P (Polynomisk tid)
- Definition: Den klasse af sprog, der kan afgøres af en deterministisk Turing-maskine i polynomisk tid.
- Formalisering: .
- Eksempel: Sortering af en liste, kontrol af om et tal er et primtal.
NP (ikke-deterministisk polynomisk tid)
- Definition: Den klasse af sprog, for hvilke en løsning kan verificeres i polynomisk tid af en deterministisk Turing-maskine, eller tilsvarende, bestemmes af en ikke-deterministisk Turing-maskine i polynomisk tid.
- Formalisering: .
- Eksempel: Opfyldelighed (SAT), Hamiltonsk cyklus.
Andre klasser
- PSPACE: Sprog, der kan afgøres i polynomiumsrum.
- UDLØBSTID: Sprog, der kan afgøres i eksponentiel tid.
7. Nedsættelser
Reduktioner er kortlægninger fra ét problem til et andet, der demonstrerer relativ beregningsmæssig vanskelighed.
Mange-en-reduktion (
)
Et sprog er mange-en reducerelig til
(
) hvis der findes en beregningsbar funktion
sådan at
.
- Formål: If er let, og
, derefter
er højst lige så svært som
.
Polynomiel tidsreduktion (
)
En polynomialtidsberegnelig reduktion bruges til at sammenligne problemer inden for og
. hvis
kan beregnes i polynomisk tid, og
, derefter
.
8. NP-Fuldstændighed
Et problem er NP-komplet hvis:
1. Det er i .
2. Ethvert problem i er polynomiel tid reducerelig til den.
Bedømmelse: er NP-fuldstændig hvis
og
.
- Eksempel: SAT-problemet er det kanoniske NP-komplette problem.
9. Beslutnings- vs. søgeproblemer
Mens beslutningsproblemer stiller ja/nej-spørgsmål, kræver søgeproblemer at finde en eksplicit løsning. Kompleksitetsteori fokuserer ofte på beslutningsproblemer, men søgeproblemer er tæt beslægtede, især inden for kryptografi og algoritmedesign.
10. Formel sprogteori
Kompleksitetsteori udnytter formel sprogteori til at repræsentere og analysere problemer.
- Almindelige sprog: Genkendt af endelige automater.
- Kontekstfrie sprog: Genkendt af pushdown-automater.
- Rekursive (afgørbare) og rekursivt optællelige (semi-afgørbare) sprog: Anerkendt af Turing-maskiner med eller uden stopgarantier.
11. Notation for Turingmaskiner
En Turing-maskine er specificeret af en tuple
, hvor:
- Endelig sæt af tilstande
- Indtast alfabet (inkluderer ikke blankt symbol)
- Båndalfabet (
), inkluderer et blankt symbol
- Overgangsfunktion
- Starttilstand
- Accepter stat
- Afvis tilstand
Beregningen af på input
er betegnet
.
12. Inputstørrelse
Længden af inputtet, betegnet , måles som
, antallet af symboler i inputstrengen
Alle kompleksitetsmål (tid, rum) udtrykkes som funktioner af
.
13. Universel Turingmaskine
En universel Turing-maskine kan simulere enhver Turing-maskine
på input
, givet en beskrivelse
og
Dette danner det teoretiske grundlag for Church-Turing-tesen.
14. Certifikater og verifikatorer
Til problemer, en verifikator er en deterministisk Turing-maskine
således at for ethvert input
, der findes et certifikat
(med
polynomium i
) tilfredsstillende
hvis og kun hvis
er et "ja"-eksempel.
- Eksempel: For SAT er certifikatet en tilfredsstillende opgave.
15. Randomiserede kompleksitetsklasser
- RP (Randomiseret polynomiel tid): Problemer, hvor en probabilistisk Turing-maskine kan bestemme medlemskab med ensidig fejl i polynomisk tid.
- BPP (Bounded-fejl Probabilistic Polynomial Time): Problemer, hvor en probabilistisk Turing-maskine kan bestemme medlemskab med tosidet fejl i polynomisk tid.
16. Oracle-maskiner
En orakel-Turingmaskine har adgang til et "orakel", der øjeblikkeligt beslutter medlemskab i et fast sprog Dette koncept bruges til at studere relativ beregnelighed og adskillelser mellem klasser.
17. Hierarki-teoremer
Hierarkiteoremer formaliserer ideen om, at flere ressourcer muliggør løsningen af flere problemer.
- Tidshierarki-sætning: Der findes problemer, der kan løses på længere tid, men ikke kortere.
- Rumhierarki-sætning: Analog udsagn for rum.
18. Fuldstændighed og hårdhed
- Hårdhed: Et problem is
-svært hvis alle problemer i klassen
reducerer til
.
- Fuldstændighed: is
-fuldfør hvis
og
is
-hård.
19. Boolske kredsløb
Boolske kredsløb modellerer beregning som acykliske netværk af logiske gates. Kredsløbskompleksitet studerer størrelsen (antal gates) og dybden (niveauer af gates), der er nødvendige for at beregne funktioner.
20. Kodning og repræsentation
Alle objekter (Turing-maskiner, grafer, formler) skal kodes som strenge over et endeligt alfabet for at kunne analyseres inden for kompleksitetsteori. Standardkodninger sikrer ensartet behandling og sammenlignelighed af problemer og algoritmer.
—
Beherskelse af disse definitioner og formelle notationer er nødvendig for en præcis og grundig forståelse af beregningskompleksitetsteori. Disse formelle værktøjer understøtter klassificeringen af beregningsproblemer, design og analyse af algoritmer og studiet af kryptografiske sikkerhedsantagelser.
Andre seneste spørgsmål og svar vedr EITC/IS/CCTF Computational Complexity Theory Fundamentals:
- Hvorfor er beregningskompleksitetsteori vigtig for forståelsen af grundlaget for kryptografi og cybersikkerhed?
- Hvilken rolle spiller rekursionssætningen i demonstrationen af ATMs uafgørelighed?
- I betragtning af en PDA, der kan læse palindromer, kan du så detaljere udviklingen af stakken, når inputtet for det første er et palindrom, og for det andet ikke et palindrom?
- I betragtning af ikke-deterministiske PDA'er er overlejring af stater per definition mulig. Ikke-deterministiske PDA'er har dog kun én stak, som ikke kan være i flere tilstande samtidigt. Hvordan er dette muligt?
- Hvad er et eksempel på PDA'er, der bruges til at analysere netværkstrafik og identificere mønstre, der indikerer potentielle sikkerhedsbrud?
- Hvad betyder det, at et sprog er stærkere end et andet?
- Er kontekstfølsomme sprog genkendelige af en Turing-maskine?
- Hvorfor er sproget U = 0^n1^n (n>=0) uregelmæssigt?
- Hvordan definerer man en FSM, der genkender binære strenge med lige antal '1'-symboler og viser, hvad der sker med den, når man behandler inputstreng 1011?
- Hvordan påvirker nondeterminisme overgangen?
Se flere spørgsmål og svar i EITC/IS/CCTF Computational Complexity Theory Fundamentals