Huis Persoonlijke financiën Op te lossen> 10 algoritmische problemen die nog niet zijn opgelost - dummies

Op te lossen> 10 algoritmische problemen die nog niet zijn opgelost - dummies

Inhoudsopgave:

Video: We're building a dystopia just to make people click on ads | Zeynep Tufekci 2024

Video: We're building a dystopia just to make people click on ads | Zeynep Tufekci 2024
Anonim

Algoritmen zijn er inderdaad al eeuwen, dus je zou denken dat wetenschappers elk algoritme inmiddels hebben ontdekt en opgelost. Helaas is het tegenovergestelde waar. Het oplossen van een bepaald algoritme geeft vaak nog een paar vragen die het algoritme niet oplost en dat leek niet duidelijk totdat iemand de oplossing bedacht.

Algoritmen zijn een reeks stappen die worden gebruikt om een ​​probleem op te lossen, en u moet ze niet verwarren met andere entiteiten, zoals vergelijkingen. Een algoritme is nooit een oplossing bij het zoeken naar een probleem. Niemand zou een reeks stappen maken om een ​​probleem op te lossen dat nog niet bestaat (of misschien nooit zal bestaan).

Deze lijst gaat over algoritmische problemen die een doel zouden dienen als iemand een oplossing voor hen zou vinden.

Omgaan met tekstzoekopdrachten

Veel tekstzoekopdrachten omvatten het gebruik van reguliere expressies - een soort steno die de computer vertelt wat hij moet vinden. De grammatica die voor de reguliere expressie wordt gebruikt, is afhankelijk van de taal of toepassing, maar u vindt reguliere expressies die op een aantal plaatsen worden gebruikt, zoals tekstverwerkers, e-mailtoepassingen, zoekdialogen en op allerlei andere plaatsen waar u nauwkeurig moet zoeken voorwaarden voor een reeks tekstitems.

Een van de huidige problemen met reguliere expressies is dat het lijkt alsof elke applicatieomgeving een vergelijkbare set regels heeft, maar met net genoeg verschillen om het maken van een zoekterm moeilijk te maken. Het gegeneraliseerde probleem met de hoogte van een ster probeert te achterhalen of er een gegeneraliseerde syntaxis voor reguliere expressies bestaat. Als dit het geval is, zou het resulterende algoritme het voor iemand mogelijk maken om slechts één methode te leren om reguliere expressies te maken om zoekopdrachten uit te voeren.

Onderscheidende woorden

Wanneer u met tekens werkt, ziet een computer cijfers en geen letters. De cijfers zijn eigenlijk slechts een reeks 0s en 1s voor de computer en hebben geen enkele betekenis. Het combineren van karakters in strings maakt de reeks van 0s en 1s langer. Als je dus twee strings vergelijkt, kan iets dat een mens in een oogopslag kan doen, tijd in beslag nemen in een computer en is er waarschijnlijk verwarring tussen conjugaten. Als u bijvoorbeeld niet voorzichtig bent met het maken van het algoritme, kan een computer luisterlist en verwarren. Belangrijker nog is dat de computer tijd nodig heeft om het verschil tussen beide te onderscheiden. Het probleem van de scheidende woorden tracht het kleinste (en snelst) mogelijke algoritme te vinden (een deterministische eindige automaat, DFN, in dit geval) om woordscheiding uit te voeren.Het doel is om een ​​woord te accepteren en een ander af te wijzen, gegeven twee woorden van een bepaalde lengte.

Bepalen of een toepassing eindigt

Een van de problemen die Alan Turing in 1936 voorstelde, was de vraag of een algoritme, gegeven een beschrijving van een programma en een invoer, kon bepalen of het programma uiteindelijk zou stoppen (de stopprobleem). Wanneer u met een eenvoudige applicatie werkt, is het eenvoudig om in veel gevallen vast te stellen of het programma zal stoppen of in een eindeloze lus zal blijven lopen. Naarmate de programmacomplexiteit toeneemt, wordt het bepalen van het resultaat van het uitvoeren van het programma met een gegeven invoer echter moeilijker. Een Turing-machine kan deze vaststelling niet maken; het resultaat is een buggy-code met oneindige lussen. Geen enkele test die gebruikmaakt van de huidige technologie kan dit probleem oplossen.

Een hypercomputer is een computermodel dat verder gaat dan de Turing-machine om problemen op te lossen, zoals het stopprobleem. Dergelijke machines zijn echter niet mogelijk met behulp van de huidige technologie. Als ze mogelijk waren, zou je in staat zijn om hen allerlei onweegbare zaken te stellen die computers momenteel niet kunnen beantwoorden. Dit artikel geeft u een goed idee van wat er zou gebeuren als iemand dit probleem zou kunnen oplossen.

Eenrichtingsfuncties maken en gebruiken

Een eenrichtingsfunctie is een functie die gemakkelijk te gebruiken is om een ​​antwoord in één richting te krijgen, maar bijna onmogelijk om te gebruiken met het omgekeerde van dat antwoord. Met andere woorden, u gebruikt een eenrichtingsfunctie om iets als een hash te maken dat zou verschijnen als onderdeel van een oplossing voor cryptografie, persoonlijke identificatie, authenticatie of andere behoeften op het gebied van gegevensbeveiliging.

Het bestaan ​​van eenrichtingsfunctie is minder mysterieus en meer een kwestie van bewijs. Veel systemen voor telecommunicatie, e-commerce en e-banking zijn momenteel afhankelijk van functies die ogenschijnlijk één manier zijn, maar niemand weet echt of ze echt één manier zijn. Het bestaan ​​van een eenrichtingsfunctie is momenteel een hypothese, geen theorie. Als iemand zou kunnen aantonen dat er een eenrichtingsfunctie bestaat, zijn problemen met gegevensbeveiliging gemakkelijker op te lossen vanuit een programmeringsperspectief.

Echt grote aantallen vermenigvuldigen

Er bestaan ​​op heel veel plaatsen echt grote aantallen. Overweeg bijvoorbeeld om berekeningen uit te voeren met afstanden naar Mars, of misschien Pluto. Er bestaan ​​momenteel methoden voor het uitvoeren van vermenigvuldiging op hele grote getallen, maar deze hebben de neiging traag te zijn omdat ze meerdere bewerkingen vereisen om te voltooien. Het probleem treedt op als de cijfers te groot zijn om in de registers van de processor te passen. Op dat moment moet de vermenigvuldiging in meer dan één stap plaatsvinden, wat de dingen aanzienlijk vertraagt. De huidige oplossingen omvatten:

  • Gauss complexe vermenigvuldigingsalgoritme
  • Karatsuba-vermenigvuldiging
  • Toom-Cook
  • Fourier-transformatiemethoden

Hoewel veel van de momenteel beschikbare methoden acceptabele resultaten opleveren, kost het ze allemaal tijd, en wanneer u veel berekeningen moet uitvoeren, kan het tijdprobleem kritiek worden. Groot aantal vermenigvuldigingen is daarom een ​​van die problemen waarvoor een betere oplossing vereist is dan de huidige.

Een resource gelijk verdelen

Evenveel middelen verdelen lijkt misschien niet zo moeilijk, maar mensen, die jaloers zijn, kunnen de resource als ongelijk verdeeld beschouwen, tenzij je een manier kunt vinden om iedereen ervan te verzekeren dat de verdeling inderdaad eerlijk is. Dit is het jaloersmakende cake-cutting probleem. Natuurlijk, als je een cake snijdt, hoe eerlijk je het ook probeert, er is altijd de perceptie dat de verdeling oneerlijk is. Het creëren van een eerlijke verdeling van middelen is belangrijk in het dagelijks leven om de strijd tussen belanghebbenden in elke organisatie te minimaliseren, waardoor iedereen efficiënter wordt.

Er bestaan ​​al twee oplossingen voor het jaloersmakende cakebesnoeiingsprobleem met een specifiek aantal mensen, maar er bestaat geen algemene oplossing. Wanneer er twee mensen bij betrokken zijn, snijdt de eerste de taart en de tweede kiest het eerste stuk. Op deze manier zijn beide partijen verzekerd van een gelijke verdeling. Het probleem wordt moeilijker met drie mensen, maar je kunt de oplossing van Selfridge-Conway proberen voor het probleem. Echter, nadat u bij vier mensen bent, bestaat er geen oplossing.

De bewerkingsafstand berekenen

De bewerkingsafstand tussen twee strings is het aantal bewerkingen dat nodig is om de ene reeks in de andere reeks te transformeren. De afstandsberekening draait om de Levenshtein-afstandsbewerkingen, die bestaan ​​uit het verwijderen, invoegen of vervangen van een teken in de tekenreeks. Deze specifieke techniek ziet gebruik in natuurlijke taalinterfaces, kwantificatie van DNA-sequenties en allerlei andere plaatsen waar je twee vergelijkbare reeksen kunt hebben die een soort vergelijking of aanpassing vereisen.

Er bestaan ​​momenteel een aantal oplossingen voor dit probleem, allemaal vrij traag. Sterker nog, de meesten van hen nemen exponentiële tijd, dus de tijd die nodig is om een ​​transformatie uit te voeren, neemt snel toe tot het punt waarop mensen pauzes kunnen zien in de verwerking van invoer. De pauze is niet helemaal zo slecht bij het gebruik van een tekstverwerker die automatische woordcontroles uitvoert en een verkeerd gespeld woord in de juiste verandert. Bij gebruik van spraakinterfaces kan de pauze echter behoorlijk opvallen en ervoor zorgen dat de menselijke operator fouten maakt.

Problemen snel oplossen

Naarmate machine learning toeneemt en we steeds meer op computers rekenen om problemen op te lossen, wordt de vraag hoe snel een computer een probleem kan oplossen, van cruciaal belang. Het P versus NP-probleem vraagt ​​eenvoudigweg of een computer een probleem snel kan oplossen wanneer het de oplossing voor het probleem snel kan verifiëren. Met andere woorden, kan de computer, als de computer redelijkerwijs kan vaststellen dat een menselijke reactie op een probleem correct is in polynomiale tijd of minder, het probleem zelf oplossen in polynomiale tijd of minder?

Deze vraag werd oorspronkelijk in de jaren vijftig besproken door John Nash in brieven aan de National Security Agency (NSA) en opnieuw in brieven tussen Kurt Gödel en John von Neumann. Naast machinaal leren (en AI in het algemeen), is dit specifieke probleem een ​​zorg voor vele andere gebieden, waaronder wiskunde, cryptografie, algoritmisch onderzoek, speltheorie, multimediaverwerking, filosofie en economie.

Het pariteitsspel spelen

In eerste instantie lijkt het oplossen van een game in het echt niet zo nuttig. Ja, games zijn leuk en interessant, maar ze bieden niet echt een achtergrond om iets nuttigs te doen - tenminste, dat is de algemene theorie. Speltheorie speelt echter een rol in een groot aantal praktijkscenario's, waarvan er veel complexe processen zijn die iemand gemakkelijker kan begrijpen als games dan als echte processen. In dit geval helpt het spel mensen onder andere geautomatiseerde verificatie en controller-synthese te begrijpen. Je kunt meer lezen over het pariteitsspel. In feite kun je het spelen.

Ruimtelijke problemen begrijpen

Om dit specifieke probleem in de juiste context te plaatsen, moet u nadenken over het verplaatsen van dozen in een magazijn of een andere situatie waarin u rekening moet houden met de ruimte waarin dingen bewegen. Het is duidelijk dat als je veel dozen in een groot magazijn hebt en ze allemaal een heftruck nodig hebben om op te halen, je niet wilt proberen te achterhalen hoe je ze optimaal kunt opslaan door ze fysiek opnieuw te rangschikken. Dit is waar je het probleem moet oplossen door een oplossing te visualiseren.

De vraag is echter of alle ruimtelijke problemen een oplossing hebben. Denk in dit geval aan een van de puzzels van die kinderen waarin je een plaatje samenstelt door de kleine tegels rond te schuiven. Het lijkt erop dat in alle gevallen een oplossing moet bestaan, maar in sommige situaties kan een slecht startpunt leiden tot een situatie die geen oplossing biedt.

Wiskundigen zoals Sam Loyd gebruiken vaak puzzels om complexe wiskundige problemen aan te tonen, waarvan sommige vandaag geen oplossing bieden. Het bezoeken van deze sites is leuk omdat je niet alleen wat gratis entertainment krijgt, maar ook stof tot nadenken. De problemen die deze puzzels oproepen, hebben praktische toepassingen, maar ze worden op een leuke manier gepresenteerd.

Op te lossen> 10 algoritmische problemen die nog niet zijn opgelost - dummies

Bewerkers keuze

Setup Menu 3 op de Rebel T6i / 750D - dummies

Setup Menu 3 op de Rebel T6i / 750D - dummies

Er wachten nogal wat aanpassingsmogelijkheden op de Setup-menu van de Rebel T6i / 750D 3. Setup-menu 3, weergegeven in de volgende afbeelding, bevat de volgende aanpassingsmogelijkheden: Schermkleur: standaard bevat het scherm Opname-instellingen opnamegegevens in het wit op een eenvoudige zwarte achtergrond. Er worden grijstinten in grijstinten gebruikt en accenten worden meestal oranje gemarkeerd. ...

Bewerkers keuze

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst aan een inhoud toevoegen tijdelijke aanduiding in Microsoft PowerPoint, klik op het gebied Klik om tekst toe te voegen en typ wat u wilt. Als u een ander type inhoud wilt toevoegen, klikt u op het pictogram in de tijdelijke aanduiding voor het gewenste type. Als u meer tekst typt dan in dat tekstvak past (vooral gebruikelijk voor ...

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

De Prullenbak op uw computer bevat onlangs verwijderde items. Uw oude bestanden bevinden zich in de Prullenbak en u kunt ze ophalen totdat u deze leegt of totdat deze de maximale maximale grootte heeft bereikt, en Windows automatisch enkele bestanden dumpt. Nadat u de Prullenbak hebt leeggemaakt, zijn alle bestanden daarin niet beschikbaar voor ...

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Nadat u een document hebt gemaakt, bent u klaar om te beginnen met typen. Tekst op de pagina plaatsen (of op het scherm) is een beetje anders in elk van de drie grote Microsoft Office-toepassingen: Word, Excel en PowerPoint. Woord: Het belangrijkste werkgebied van het programma is een lege lei waarop u rechtstreeks kunt typen. Klik gewoon in de ...

Bewerkers keuze

Animatie maken met de HTML5-canvastag - dummies

Animatie maken met de HTML5-canvastag - dummies

Hoewel de HTML5-canvastag misschien niet als vervanging voor Flash als mechanisme voor het implementeren van games en animaties in de browser, is het redelijk eenvoudig om animaties aan een canvasafbeelding toe te voegen. De sleutel is om de animatiefuncties te gebruiken die al in de browser zijn ingebouwd. Basisstructuur van de animatielus in HTML5-canvas Een animatie ...

Hoe externe stijlen maken in CSS3 - dummies

Hoe externe stijlen maken in CSS3 - dummies

De meeste ontwikkelaars gebruiken externe stijlen in CSS3 om te verkleinen de hoeveelheid werk die nodig is om een ​​site te onderhouden. Een. CSS-bestand bevat alle stijlen voor de site, wat betekent dat het veranderen van een stijl voor de hele site net zo eenvoudig is als het veranderen van dat ene bestand (in plaats van elke pagina). Omdat de wijziging plaatsvindt in slechts ...

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

De Yahoo! Gebruikersinterface (YUI) -bibliotheek (Yuilibrary) is een complete ontwikkeling - API verwant met jQuery en jQuery UI CSS3 gecombineerd in sommige opzichten en rijker dan deze bibliotheken in andere. Dit is een complexe API die is ontworpen om aan de behoeften van grotere applicaties te voldoen. Eigenlijk moet je echt de tutorials doorlopen, ...