|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programvara
  • Adobe Illustrator
  • animation Software
  • antivirusprogram
  • ljudprogram
  • Säkerhetskopiera data
  • Bränn CD-skivor
  • Bränn DVD
  • Data Compression
  • Database Software
  • Desktop Publishing
  • Desktop Video
  • Digital Video Software
  • Drupal
  • Educational Software
  • Engineering Software
  • Filtillägg Typer
  • Financial Software
  • Freeware , Shareware & Abandonware
  • GIMP
  • Graphics Software
  • Home Recording Software
  • Microsoft Access
  • Microsoft Excel
  • Microsoft Publisher
  • Microsoft Word
  • Open Source Code
  • Andra datorprogram
  • PC-spel
  • Photoshop
  • Portable Document Format
  • PowerPoint
  • presentationsprogram
  • Produktivitet Software
  • quicktime
  • Remote Desktop Management
  • SQL Server
  • Skype
  • Programvara betaversioner
  • Programvara Konsulter
  • Software Development Companies
  • Software Licensing
  • Spreadsheets
  • Skatt förberedelse programvara
  • Utility Software
  • Web Clip Art
  • Windows Media Player
  • Ordbehandlingsprogram
  • Facebook
  • Twitter
  • Instagram
  • LinkedIn
  • TikTok
  • WhatsApp
  • WordPress
  • Chrome
  • Discord
  • Amazon
  • * Dator Kunskap >> Programvara >> Data Compression >> Content

    Hur fungerar binära komprimeringsalgoritmer för att minska storleken på datafiler?

    Binära kompressionsalgoritmer fungerar genom att identifiera och utnyttja mönster, uppsägningar och statistiska sannolikheter inom de binära data i en fil. De uppnår detta genom en mängd olika tekniker, i stort sett kategoriserade som förlustfri och förlustig komprimering. Vi kommer att fokusera på förlustfri komprimering, eftersom den används för att bevara den exakta originaldata.

    Här är en uppdelning av vanliga förlustfria binära komprimeringsmetoder:

    1. Identifiera redundans &mönster:

    * Repetition: Den enklaste formen. Om samma byte eller sekvens av byte upprepar flera gånger, ersätter algoritmen dem med en markör som indikerar den upprepade sekvensen och antalet repetitioner. Detta kallas ofta run-Length Encoding (RLE) . Till exempel:

    * ORIGINAL:`AAAAABBBCCCDD`

    * RLE komprimerad:`5A3B3C2D` (5 A, 3 B, 3 C, 2 DS)

    * RLE är mest effektiv när det finns långa körningar av samma data.

    * ordbokbaserad komprimering: Denna metod bygger en ordbok (eller tabell) för ofta förekommande sekvenser av byte. Istället för att lagra hela sekvensen varje gång, lagrar algoritmen indexet (eller koden) som representerar den sekvensen i ordboken.

    * LZ77 och LZ78 (och deras varianter lzw, deflate): Dessa är hörnstenens ordbokbaserade algoritmer. De fungerar genom att upprätthålla ett skjutfönster med nyligen sett data.

    * lz77: Letar efter matchande sekvenser * inom * skjutfönstret. När den hittar en match lagrar den en `(avstånd, längd)` par, där:

    * `Avstånd ':Hur långt tillbaka i fönstret startar matchen.

    * `Längd ':Hur länge den matchande sekvensen är.

    * lz78: Bygger en ordbok med * nya * fraser när det möter dem. Den kodar varje ny fras som `(index, karaktär)`, var:

    * `Index ':Indexet för * längsta * prefixet för frasen som redan är i ordboken.

    * 'Karaktär':Karaktären som utvidgar prefixet för att skapa den nya frasen.

    * LZW (Lempel-Ziv-Welch): En förbättring av LZ78. Det börjar med en förinitialiserad ordbok som innehåller alla enstaka tecken. Den bygger ordboken dynamiskt när den bearbetar data. LZW är känd för att användas i GIF -bildformatet (även om patent på LZW orsakade problem ett tag).

    * deflate: Kombinerar LZ77 med Huffman -kodning (förklaras nedan) för ännu bättre komprimering. Det används i Gzip, Zlib och PNG. Det är väldigt vanligt.

    2. Statistisk kodning (entropikodning):

    * Dessa metoder analyserar frekvensen för olika symboler (byte) i data och tilldelar kortare koder till mer frekventa symboler och längre koder till mindre frekventa. Detta är baserat på informationsteori, där mer troliga händelser kräver mindre information för att överföra.

    * huffman kodning: Ett kodningsschema med variabel längd. Det bygger ett binärt träd baserat på symbolens frekvenser. De mer frekventa symbolerna placeras närmare trädets rot, vilket resulterar i kortare kodlängder.

    * Algoritmen genererar ett prefixkod, vilket innebär att ingen kod är ett prefix av en annan kod, vilket förhindrar tvetydighet under avkodning.

    * aritmetisk kodning: Representerar hela dataströmmen som ett enda fraktionsnummer mellan 0 och 1. Fraktionens längd bestäms av symbolens sannolikheter. Aritmetisk kodning uppnår ofta bättre komprimering än Huffman -kodning, särskilt när man hanterar symboler som har mycket olika sannolikheter. Det är dock mer beräkningsintensivt.

    illustrativt exempel (förenklad):

    Föreställ dig att vi har följande data:`aabbcccaadddeeeffff`

    1. rle: Kan komprimera till `2A3B3C2A3D3E4F` (minskar det, men inte drastiskt).

    2. huffman kodning:

    * Frekvensanalys:

    * A:5

    * B:3

    * C:3

    * D:3

    * E:3

    * F:4

    * Huffman Tree Construction (exempel):

    * Kombinera minst ofta:B (3) och C (3) -> Nod BC (6)

    * Kombinera d (3) och e (3) -> nod de (6)

    * Kombinera BC (6) och DE (6) -> Nod BCDE (12)

    * Kombinera F (4) och A (5) -> Node AF (9)

    * Kombinera AF (9) och BCDE (12) -> rot (21)

    * Tilldela koder (0 för vänster, 1 för höger korsning av trädet) - * Detta kan variera baserat på implementering! *

    * A:00

    * B:100

    * C:101

    * D:110

    * E:111

    * F:01

    * Komprimerade data:`00001001001001011101101101111111110101010101` (mycket kortare än originalet, särskilt för stora datasätt!)

    Nyckelöverväganden:

    * Komplexitet: Olika algoritmer har olika beräkningskomplexiteter. Vissa är snabbare för kodning/avkodning men uppnår lägre kompressionsförhållanden. Andra är långsammare men uppnår högre komprimering.

    * kompressionsförhållande: Förhållandet mellan den ursprungliga filstorleken och den komprimerade filstorleken. Ett högre förhållande indikerar bättre komprimering.

    * Minnesanvändning: Algoritmer kräver minne för buffertar, ordböcker och trädstrukturer. Minnesanvändning kan vara en begränsande faktor, särskilt när du komprimerar stora filer.

    * Datatyp: Vissa algoritmer är bättre lämpade för specifika typer av data (t.ex. text, bilder, ljud). Till exempel är algoritmer som utnyttjar rumslig lokalitet bra för bilder.

    Sammanfattningsvis fungerar binära komprimeringsalgoritmer av:

    1. Analysera uppgifterna: Identifiera mönster, repetitioner och statistiska frekvenser.

    2. som representerar uppgifterna mer effektivt: Använda kortare koder för vanliga element och längre koder för sällsynta element.

    3. lagring av metadata: Lagring av information som behövs för att dekomprimera uppgifterna (t.ex. ordböcker, Huffman -träd).

    Valet av algoritm beror på de specifika kraven i applikationen, inklusive önskat kompressionsförhållande, tillgängliga beräkningsresurser och typen av data som komprimeras. Ofta används hybridmetoder (som deflat) för att kombinera styrkorna hos olika tekniker.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur komprimera ett Super Smash Bros Brawl ISO File
    ·Hur använder du data i en mening?
    ·Hur zip och packa upp filer och mappar ( i Windows XP )…
    ·Hur konvertera en zip-fil till en MP3
    ·Vad är Data Marshalling?
    ·Hur komprimera filer till en mobil
    ·Hur Zip en fil i Mac OS X
    ·Hur Extrahera zip-filer All Together till en mapp
    ·Hur man bygger en IPSW -fil från en ZIP
    ·Hur många nummer kan spelas in med 6 bitar?
    Utvalda artiklarna
    ·Hur man skapar ett kalkylblad Använda Access
    ·Hur Importera AVI video i Premiere Pro
    ·Vad är betydelsen av dator i banken?
    ·Hur du använder Excel BETAINV funktion
    ·Konvertera en PDF till en DWG gratis
    ·Hur du ändrar ditt lösenord Använda FileZilla
    ·Hur man bädda in en SWF -fil
    ·Hur man gör Lips Shimmer med GIMP
    ·Skillnader mellan Visual Basic Script & Java
    ·Hur man ominstallera GIMP
    Copyright © Dator Kunskap https://www.dator.xyz