quinta-feira, 21 de novembro de 2013

Pri SQlite

Pri SQLite

Vidu ankaŭ ...
SQLite estas en-proceza biblioteko kiu implementas sinrega, sin-servilo, nula agordo , transaccionales SQL datumbaza motoro. La kodo por SQLite estas en la publika domajno kaj estas tiel liberaj por uzi ĝin por ajna celo, komerca aŭ privata. SQLite nuntempe troviĝas en pli aplikoj ol ni povas kalkuli, inkluzive el pluraj alta profilaj projektoj.
SQLite estas enigita SQL-datumbaza motoro. Malkiel multaj aliaj SQL-datumbazojn, SQLite ne havas apartan servilan procezon. SQLite legas kaj skribas rekte al ordinaraj diskaj dosieroj. Kompleta SQL-datumbazo kun multnombraj tabloj, indeksoj, ekigiloj kaj estas enhavita en sola diska dosiero. La datumbazo de dosiera formato estas kruco-platformo - vi povas libere kopii datumbazon inter 32-bitaj kaj 64-bitaj sistemoj aŭ inter pezkomenca kaj little-endiaj arkitekturoj. Tiuj trajtoj fari SQLite populara elekto kiel Apliko de File Format . Pensu pri SQLite ne kiel anstataŭanto por orakolo sed kiel anstataŭanto por fopen()
SQLite estas kompakta biblioteko. Kun ĉiuj funkcioj ebligis, la biblioteka grandeco povas esti malpli ol 500KiB, depende de la celo platformo kaj tradukila optimumigo agordojn. (64-bita kodo estas pli granda. Kaj iuj tradukas optimumigaĵojn kiel agresema funkcio inlining kaj buklo unrolling povas kaŭzi la celkodo esti multe pli granda.) Se nedevigus karakterizaĵojn estas preterlasitaj, la grandeco de la SQLite-biblioteko povas reduktiĝi sube 300KiB. SQLite povas fari ankaŭ kuri en minimuma pilo spaco (4KiB) kaj tre malmulte amaso (100KiB), farante SQLite populara datumbaza motoro elekto en memoro retenis klaĉojn kiel poŝtelefonoj, PDA, kaj MP3 ludantoj. Estas tradeoff inter memora uzado kaj rapido. SQLite ĝenerale kuras pli rapide ju pli memoro vi donos. Tamen, agado estas kutime sufiĉe bona eĉ en malaltaj memoraj medioj.
SQLite estas tre atente provis antaŭ ĉiu ĵetas kaj havas reputacias por esti tre fidinda. La plejparto de la SQLite-fontkodo estas dediĉita pure por testado kaj konfirmo. Aŭtomatigita testa suito kuras milionojn kaj milionoj de provaj kazoj engaĝante centoj da milionoj da individuaj SQL deklaroj kaj atingas 100% filio testo kovrado . SQLite respondas gracie memorajn atribuajn malsukcesoj kaj I/O diskaj eraroj. Transakcioj estas acida eĉ se interrompita de sistemo akcidente aŭ potencaj fiaskoj. Ĉio ĉi estas kontrolita per la aŭtomataj provoj uzi specialajn testojn arneses kiu simulas sistemajn fiaskojn. Kompreneble, eĉ kun ĉiuj ĉi provoj, estas ankoraŭ cimojn. Sed kontraste kelkaj similaj projektoj (ĉefe komerca konkurantoj) SQLite estas malfermitaj kaj honestaj pri ĉiuj cimoj kaj provizas cimoj lertaj inkluzive listoj de kritika cimoj kaj minuto-per-minuta kronologioj de cimaj raportoj kaj kodajn ŝanĝojn.
La SQLite-kodbazo estas apogita de internacia teamo de programistoj kiuj laboras en SQLite plentempe. La programistoj daŭre vastigas la eblojn de SQLite kaj plibonigi lian fidindeco kaj rendimento subtenante malantaŭen kongruo kun la eldonita interfaco spec , SQL sintakso , kaj datumbaza formato de dosiero. La fontkodo estas absolute libera al neniu kiu volas, sed profesia subteno estas ankaŭ disponebla.
Ni la programistoj esperas ke vi trovos SQLite-on utila kaj ni admonas vin kaj vi uzas ĝin bone: fari bonon kaj belaj produktoj kiuj estas rapida, fidinda, kaj simpla por uzi. Serĉu pardonon al vi kiel vi pardonu aliaj. Kaj kiel vi ricevis SQLite senpage, tiel ankaux libere donaci, pagi la ŝuldon antaŭen.

sexta-feira, 15 de novembro de 2013

Sebastian Thrun : Ĵetas niajn datumajn Sciencon kaj Grandaj Datumoj Lerta konstruita kun Leading Industrio Partneroj




Mi ekscitita ĵeti nia nova Datumoj Scienco kaj Big Datumoj Relo. Ĉi tiu estas la unua Datumoj Scienco kaj Big Datumoj curriculum konstruita rekte kun la industrio pioniroj. Vi povas lerni la lastaj teknikoj , iloj, kaj konceptoj disvolvitaj en la entreprenoj kiuj faris Big Datumoj granda.
Nia unua klaso en ĉi tiu track , Enkonduko al Hadoop kaj MapReduce , estas disponebla tuj. Ĉi tiu kurso estis konstruita en kunlaborado kun Cloudera , la industrio ĉefo por entrepreno -grada datumoj mastrumado programaro. En ĉi tiu kurso , Cloudera de spertaj kaj nia Udacity instruistoj komencos respondi al la demando " Kio estas Granda Datumoj ? " Ili instruos vin fundamentajn principojn de Hadoop , MapReduce , kaj kiel sencon de la grandaj datumoj. Programistoj lernos kapabloj kiuj provizas fundamenta blokoj al derivanta maksimuma valoro de la mondo datumoj. Teknikistoj kaj komercaj perantoj gajnos la konoj por konstrui grandan datumoj strategio ĉirkaŭ Hadoop . Ni estas tre ekscitita pri tiu asocio , kiel la rezultanta kurso estas en la avangardo de la tre bona Silicia Valo devas proponi.
Kaj tie estas pli por veni. Ni estas malfacila en la laboro evoluantaj aldonan klasoj kun aliaj pioniroj en Datumoj Scienco kaj Big Datumoj. Nia teamo laboras kun spertaj de Facebook, MongoDB , kaj aliaj por rondigi ekster la plenan kursaro . Ĉi tiuj klasoj kompletigi nian ekzistanta statistikoj kaj programado klasoj. Tiuj prenos vin el larĝan superrigardon kun Enkonduko al Datumoj Scienco, al Esploristino Datumoj Analizo kie vi ricevos viajn piedojn malsekaj kun R , por Datumoj kvereloj kun MongoDB , la tutan vojon al progresinta Big Datumoj temoj kiel Lernivaj . Ili helpos al vi iri de komenco analizistoj la tutan vojon al granda datumoj spertaj.
Kial ni komencante per Datumoj Scienco kaj Big Datumoj ? Datumoj ŝanĝiĝas preskaŭ ĉiun aspekton de kiel kompanioj funkcii . Komprenojn de analizo de datumoj estas ŝlosila por produkto dezajno, kliento akiraĵo kaj reteno , loĝistiko , io ajn ! Preskaŭ ĉiu Fortune 500 kompanio estas duobligante malsupren sur granda analizo de datumoj por konkurenci en ilia merkato. En la sekvaj tri jaroj , estas atendata malabundeco de ĝis 190,000 datumoj scienco spertaj nur en Usono .
De hodiaŭ , la studentoj povas studi la libera courseware por Enkonduko al Hadoop kaj MapReduce en propra ritmo modo - aspektas kiel mem- studo MOOC . En januaro , ni proponos plenan kurson sperton surbaze de tiu courseware materialo. Daŭrigante la sukceso de nia por - kredito klasoj dum la somero , ĉi tiuj kursoj inkludos manoj sur studentaj projektoj kun instruisto sugestoj , kariero mentoring , kaj la ŝanco por gajni Big Datumoj registrita apogita de la Malferma Edukado Alianco. Lernantoj, kiuj subskribas anticipe por Januaro ricevos 30 % rabaton.
Udacity misio estas eduki popolon tiel ili povas vivi pli bona vivo. En epoko de rifuzitaj dungado ŝancoj en multaj tradiciaj areoj, ni plifortigas niaj lernantoj akiri la necesajn kapablojn por elstari en la alta kresko tech industrio.
Kiel Mike Olson, Cloudera la estro Strategio Oficiala kaj Prezidanto de la Estraro, dividitaj, " Ni kredas Udacity la vizio al demokratiigi edukado per fari profesia trejnado atingeblaj kaj alirebla por ĉiuj, kaj kredu tiu modelo ebligos al ni pli efike atingi aspirante Big Datumoj teknikistoj ĉirkaŭ la mondo kiuj volas pligrandigi siajn kapablojn en Hadoop . Kune, Cloudera kaj Udacity estas celante la ludkampo , plifortigas ĉiu kun la deziro lerni akiri la necesajn kapablojn por sukcesi en la moderna datumoj ekonomio, sendepende de kie vivas aŭ kio iliaj soci -ekonomia fono estas. "
Ni estas fieraj proponi tiujn kursojn kune kun niaj partneroj industrio kaj alporti al vi la plej bona linio edukado sperto.

Pri niaj Nova Kurso Sperto


Saluton Josberto ,
Kiam vi preni kurson sur Udacity , ni volas ke vi sukcesos. Vi venis al Udacity lerni ion novan - antaŭi via instruado aŭ via kariero. Kaj ni engaĝiĝas por certigi al vi fari.
Ni estas ĵeti tute novan kurson sperto desegnita por certigi vi sukcesos . Imagu preni Udacity klaso kaj povi :

    
Laboro kun trejnistoj kiuj estas disponeblaj por doni al vi personigita sugestoj , por gvidi vian lernadon , kaj eĉ por helpi vin kun kodo revizio.
    
Konstruu mirinda projektoj kiuj integras kion vi lernis , por amuzo kaj por via profesia disvolviĝo.
    
Get valoraj sugestoj sur via projektoj kaj konstruos viajn biletujo ! Akiru kontrolita registrita ke - en iuj kazoj - estas apogitaj de la Open Edukado Alianco. Tiu estas grupo de gvidaj tech kompanioj kiuj laboras kun ni por fari la plej bona kursoj.
Se tio ekscitas vin , lerni pli pri tio ĉi tie. Tio estas personigita edukado, adaptitan al viaj celoj por lernado kun ni kaj optimumigita por akiri al vi la teknologio kariero vi volas.
Kaj ... ni ĵeti tiun kune kun iuj grandaj novaj klasoj , disvolvita kunlabore kun gvidantoj en la teknologia industrio kiel Facebook, Cloudera , Salesforce , kaj aliaj. Ĉi tiuj klasoj estas desegnitaj specife akiri vin via sonĝo laboro. Persone, mi vere ekscitiĝas pri nia nova Datumoj Scienco kaj Big Datumoj spuro. Estos 190.000 malferma laborpostenoj nur en Usono en la sekvanta 36 monatoj.
Se ĉi tio ne estas por vi, ne maltrankviliĝu ! Nia courseware restas havebla senpage. Vi ankoraŭ povas spekti ĉiuj videos , prenu la tutan kvizojn , kaj ŝvito tra la programado ekzercoj en via propra. Sed vi eble mankas el sur vere _transformational_ lernado. Kaj vi ne gajnos la registritaj kiu estas rekonitaj de industrio.
Dankon por esti Udacious . Ni laboras zorge por ke via lernado sperto mirinda !
Vidu vin en la klaso !
Sebastian Thrun

quinta-feira, 3 de outubro de 2013

Kio estas PostgreSQL?

PostgreSQL

PostgreSQL estas potenca datumbaza motoro, kiu havas karakterizaĵojn kaj funkciojn ekvivalentajn al multaj direktistoj de komercaj datumbazoj. Estas pli kompletaj ol MySQL ĉar ĝi permesas stokitajn metodojn, integrecajn devigojn, vidpunktoj, ktp. kvankam en la lastaj versioj de MySQL faris grandajn paŝojn en tiu direkto.

  

Instalado

En Ubuntu disponeblaj pakoj por multnombraj PostgreSQL versioj: 7.4, 8.0, 8.1 kaj 8.2 por instali la plej lastan version, se vi bezonas iun supre. La pakoj bezonataj por kompleta instalado estas tiuj de la kliento (PostgreSQL-kliento-8.2) kaj la servilo flanko (PostgreSQL-8.2). La kliento komputilo kiu ni uzas kiel ni nur bezonas la kliento pakoj. Recomentable ankaŭ instali grafikan kliento kiu havigos la interago kun la servanto. Grafika kliento estas bona pgAdmin III , kiu funkcias tre bone.
Se vi dubas ke vi bezonas, vi povas instali la tri pakojn:
  $ Ŝvitas aptitude install PostgreSQL-8.2 PostgreSQL-kliento-8.2 pgadmin3
Dosiero: Noto clasica.png Memoru malinstali ajnan version de PostgreSQL vi ne bezonas ne tuŝos la agadon de via sistemo.
Pro sekurecaj kialoj establi la novan pasvorton al la sistemo kreita de PostgreSQL
  $ sudo passwd Postgres
Ŝanĝi aliro privilegiojn Postgres uzanto ŝelon kun la sekva komando:
  $ sudo vipw
Kaj ŝanĝi la Postgres uzanto konko "/ bin / malvera" al "/ bin / bash". Tiam ni iris al gravuri kun ellasilo ": wq". Por kontroli, ke la instalado sukcesis ni aliri la servilon konko datumbazo:
  $ sudo su Postgres-c "psql template1"
Se aliro estis sukcesa ŝanĝis la pasvorton por la uzanto defaŭlta datumbazo servilo:
   template1=# ALTER USER postgres WITH PASSWORD 'nueva_contraseña';
Vi ricevos la sekvan mesaĝon konfirmante la transakcio:
  Alter ROLO
Eliro la ŝelo datumbazo servilo kun la ordono \ q:
  template1 = # \q
  

Agordo

  

Permesu fora rilatoj

Pro sekurecaj kialoj, la defaŭlta agordo ne permesas eksteraj rilatoj. Por tio, vi devas redakti / etc/postgresql/8.2/main/postgresql.conf.
  $ sudo gedit / etc/postgresql/8.2/main/postgresql.conf
Nun serĉi la sekvaj linioj estas dirita:
  # Listen_addresses = 'localhost'
Kaj anstataŭigi ĝin per la jena linio:
  listen_addresses = '*'
Tiam serĉi la sekva linio kaj forigi la komento marko:
  # Password_encryption = en
Kaj ni devus esti la jenaj:
  password_encryption = en
Konservi la ŝanĝojn kaj restartu la domajno por ke la ŝanĝoj efektiviĝos:
  $ sudo /etc/init.d/postgresql-8.2 rekomencos
  

Agordi la aliro listo

La agordo de la aliro listo povas diri al PostgreSQL kiu aŭtentokontrolo metodo por uzi kaj konstrui konfidon por iuj maŝinoj kaj retoj. Vi devas redakti la dosieron / etc/postgresql/8.2/main/pg_hba.conf:
  $ Ŝvitas vidis / etc/postgresql/8.2/main/pg_hba.conf
Fine de la dosiero estas listo de defaŭlta aliro, nun, depende de via bezono oni povas fari la sekvaj:
  • Se vi bezonas ajna uzanto por konekti tra specifa IP-adreso, aldonu la sekvan linion en la fino:
  gastigas ĉiujn ĉiuj 192.168.1.4 255.255.255.0 md5
Dosiero: Noto clasica.png La IP-adreso kaj subreto masko estas ekzemploj, anstataŭigi per uzanto datumojn kiuj postulas konektanta.
  • Se vi bezonas ajna uzanto konektas tra aparta IP sendepende de la pasvorton (ni fidas tiun IP), la linio estas:
  gastigas ĉiujn ĉiuj 192.168.1.4 255.255.255.255 konfido
  • Se vi bezonas ajna uzanto (uzanto autenticando datumbazo, kompreneble) estas koneksa per iu IP-adreso, aldonu la sekvan linion en la fino:
  gastigas ĉiujn ĉiuj 0.0.0.0 0.0.0.0 md5
  • Se aparta uzanto bezonas konekti al aparta datumbazo uzante specifan IP-adreso, aldonu la sekvan linion en la fino:
  MyUser MyDatabase gastiganto 192.168.1.4 255.255.255.0 md5
  • Savas ŝanĝoj faritaj al la arkivo kaj restartu la demono por la ŝanĝojn preni efekto:
  $ Ŝvitas / etc/init.d/postgresql-8.2 rekomencos
  

Uzante Direktado

PostgreSQL uzantoj havas kelkajn kapablojn kiuj difinas en lia kreado. Mi volas diri ke uzanto povas aŭ ne povas krei pli da uzantoj kaj uzanto povas aŭ ne krei datumbazojn. En la ekzemplo vi povas vidi sube ni kreas uzanton kiu ne povas krei pli da uzantoj (ne administranto) sed povas krei pli datumbazojn. La-P kaŭzas al ni por peti la pasvorton vi atribuas al la uzanto. Alie la uzanto estos kreita sen pasvorto.
 
$ createuser -A -d -P -h host -U usuario nuevo_usuario
Enter password for user "nuevo_usuario":
Enter it again:
 Kiel diskutis pli supre, estas administrantoj uzanto (povas krei aliajn uzantojn). Evidente ĉi komando devas esti ekzekutita de uzanto kun tiu trajto.
Simile oni povas forviŝi uzanto tiamaniere:
  $ Dropuser-h gastiganto-Aŭ uzanto usuario_borrar
  

Rezerva

Por subteni datumbazo havas jena komando:
  $ Pg_dump-h gastiganto-Aŭ uzanto db_name> nombre_bd.sql
Por fari restaŭrkopion de ĉiuj PostgreSQL datumbazoj de servilo, uzu ĉi tiun skripton ankaŭ:
  #/bin/bash
  ## BEGIN config # #
  Host = localhost
  BACKUP_DIR = tmp
  ## End config # #
 
  if [!  BACKUP_DIR-d], then
    mkdir-p $ BACKUP_DIR
  fi
 
  POSTGRE_DBS = $ (psql-h $ HOST-Aŭ Postgres-l | awk '(NR> 2) && (/ [a-za-Z0-9] + [] + [|] /) && ($ 0! ~ / Ŝablono [0-9] /) {print $ 1} ');
 
  for DB in $ POSTGRE_DBS, faru 
    eĥo "* datumoj de PostgreSQL Backuping $ DB @ $ HOST ..."
    pg_dump-h $ HOST-Aŭ Postgres $ DB> $ BACKUP_DIR / pg_ $ DB. SQL
  farita 
Por restarigi backup:
  psql-d dbname-f archivo.pgdump
 

Vidu ankaŭ

  

Eksteraj Ligiloj

terça-feira, 30 de abril de 2013

Grafos20131-lista2.pdf.txt

Federacia Universitato de Ceará
Scienco Centro
Fako de Komputanta
Algoritmoj por Grafikaĵoj

Dua Listo de ekzercoj

 Ĉiu √ signifas nivelon de malfacileco:
√ facila, meza kaj √ √ √ √ √ malfacila. Supozi grafeo rilataj
G = (V, E), | V | = n, v ∈ V.

Konsideru ne-orientita G kaj kies aro de verticoj estas V, tranĉrando aro estas E. Ankaŭ, konsideri n = | V | kaj m = | E |.

√
1. Disvolvi algoritmo komplekseco O (n + m) por determini la distancon de ĉiu vertico al specifa vertico V r ∈ V. Indiki kion la datumstrukturo estu uzata por reprezenti la grafikaĵo por respekti la komplekseco bezonata.

√ √ √
2. Estu G esti grafeo reprezentita de najbarmatrico kiu uzas 1 malmulto por vertico por G. Entajpu la vojon algoritmo en larĝa G kiu utiligas la sekvajn trajtojn disponebla por operacio de vortoj de B bitoj ĉiu (tipe, B = 32 kaj B = 64 en praktiko): bitlarĝa logika KAJ de la du vortoj (ekzemple, & operatoro C); determino de la unua ne-nulo bito en vorto (ekzemple, builtin FFS kaj simila funkcio en C). Analizi la efekto sur la runtime de la algoritmo.

√ √
3. Determini la komplekseco de la algoritmo akiris en la antaŭa demando por la kazo en kiu G estas reprezentita de najbarmatrico.

√
4.
Disvolvi algoritmo en profundo itinero tra ĉiuj verticoj de grafeo, eĉ se ĝi estas malkonektita.

√ √
5. Alpreni ke G estas duuma arbo. Supozas ke la algoritmo por kalkuli la distancoj r el kiu vertico estas modifita per anstataŭiganta la vosto por ĉelo. Kio proprieto la ordo de trairado de la verticoj de la nova algoritmo posedas? La distancoj estas ankoraŭ kalkulita korekte?
Pruvi viajn respondojn.

√ √
6. Disvolvi algoritmo kiu ricevas kiel enigo G, r ∈ V x ∈ {1, 2,. . ., N}, kaj kalkuli la verticoj de G kiu estas je distanco r estas ne pli grandaj ol x. Determini la komplekseco de via algoritmo.

√ √ √
7. Al orientita grafeo estas grafeo kie la randoj estas direktita, kio signifas, ke, donita du klaraj verticoj u, v ∈ V uv paro diferencas de paro vu. Se G estas direktita grafeo, tiam respondu la sekvajn demandojn:

1. Kiu propraĵo devas esti kontentigitaj de G por povi trovi ordigante V_0, v_1. . ., V_ {n-1} de la verticoj de G n tia ke i <j, tiam vj vidis ∈ E, por mi, j ∈ {0,. . ., N - 1}?

2. kiel uzi la vojo en profundo akiri ordigante kun la propraĵo pli supre (konsiderante ke ĉi tiu varo ekzistas)? (Konsileto: kontrolu la ebleco de dorso randoj)

sexta-feira, 15 de fevereiro de 2013

Huffman kodigo

Huffman kodigo

El Vikipedio, la libera enciklopedio.
Huffman arbo generita per la ĝusta frekvenco de la teksto "this is an example of a huffman tree". La oftecoj kaj kodoj de ĉiu karaktero estas sube. La kodita de tiu frazo postulas 135 bitoj (ne kalkulante la spaco necesa por la arbo mem).
Carac Freq Kodo
spaco 7 111
la 4 010
kaj 4 000
f 3 En 1101
h 2 En 1010
i 2 En 1000
m 2 0111
n 2 0010
s 2 En 1011
t 2 0110
l 1 11001
la 1 00110
p 1 10011
r 1 11000
u 1 00111
x 1 10010
La kodigo kodigo estas metodo de kunpremo, kiu uzas la probablo de apero de simboloj en la datuma aro al esti kompresita determini kodoj de ŝanĝiĝema longitudo por ĉiu simbolo. Ĝi estis disvolvita en 1952 de David A. Huffman kiu estis tiutempe studento de PhD ĉe MIT , kaj estis eldonita en la artikolo "Al Metodo por la Konstruo de Minimuma-Redundo Kodoj".
A duuma arbo kompleta alvoko Huffman arbo estas konstruita rekursie de la junto de la du malaltaj probablo simboloj, kiuj estas poste kombinita en simboloj kaj ĉi tiuj simboloj helpa anstataŭita en la aro de helpaj simboloj. La procezo finas kiam ĉiuj simboloj estis kunigitaj en helpa simboloj, formante duuma arbo. La arbo estas tiam trairita de asignanta valorojn al duuma 10 por ĉiu rando , kaj la kodoj estas generitaj de tiu vojo.
La kodigo kodigo estas optimuma agado kiam la probabloj de la simboloj estas potencoj de du negativaj ( 2 ^ {-1}, 2 ^ {-2}, ... ). La generita kodo ankaŭ garantias esti unusenca, ĉar neniu kodo povas esti la prefikso de alia kodo.

Indekso

Algoritmo

Atribui la gravuloj pli oftaj duuma kodoj de pli malgranda longeco, konstruas duuma arbo bazita sur la probabloj de apero de ĉiu simbolo . En ĉi tiu arbo la folioj reprezentas la simbolojn ĉeestas en la datumojn asociitaj kun iliaj respektivaj probabloj de spritaĵo. La intera nodoj reprezentas la sumo de la probabloj de apero de ĉiu simboloj ĉeestas en ĝiaj branĉoj kaj la radiko reprezentas la sumo de la probabloj de ĉiuj simboloj en la datuma aro. La procezo komencas per la kunigo de la du malpli verŝajna simboloj, kiuj estas poste kunigis en nodo al kiu estas atribuita la sumo de iliaj probabloj. Ĉi tiu nova nodo estas tiam traktita kiel folio sur la arbo, tio estas, unu el la simboloj de la alfabeto, kaj kompare al la aliaj laŭ iliaj probablo. La procezo ripetas ĝis ĉiuj simboloj estas kunigitaj sub la radika nodo.
Ĉiu rando de la arbo estas asociita kun unu cifero duuma (01). La kodo por ĉiu simbolo estas tiam difinita lauxiris sur la arbon kaj notante la ciferoj de randoj trairis de la radiko al la folio responda al la dezirata simbolo.
La algoritmo por konstruado de ĉi tiu arbo estas kiel sekvas:
 dum grandeco (alfabeto)> 1:
   S0: = retira_menor_probabilidade (alfabeto)
   S1: = retira_menor_probabilidade (alfabeto)
   X: = novo_nó
   X.filho0: S0 =
   X.filho1: S1 =
   X.probabilidade: + = S0.probabilidade S1.probabilidade
   enmetas (alfabeto, X)
 Fine dum

 X = retira_menor_símbolo (alfabeto) # je ĉi tiu punkto estas nur simbolo.

 por ĉiu folio en littukojn (X):
   kodo [folio]: = percorre_da_raiz_até_a_folha (folio)
 por fini
En ĉi tiu pseŭdo-algoritmo funkcio grandeco redonas la numeron de nodoj aŭ folioj stokitaj en nia dosieraro, tie nomitaj alfabeto. La funkcio retira_menor_símbolo (alfabeto) redonas la nodo aŭ folio malpli verŝajna en nia dosieraro kaj forigi tiun simbolon de la deponejo. La komando kreas novan nodon novo_nó malplena. La funkcio enmetas (alfabeto, X) enmetas la X simbolo en nia dosieraro kaj fine la funkcio percorre_da_raiz_até_a_folha (folio) trairas la duuma arbo de radiko al folio amasigante la valoroj asociita kun la lateroj en lia reveno valoro.
Tiel, la karaktero plej ofte havas la plej mallongan kodon kiu estas ĝuste la celo de statistikaj kunpremo. Tia estas la aliaj karakteroj, por proporcie pligrandiĝanta la nombro de bitoj kiel la propraĵo:
  • La averaĝa grandeco de la karakteroj (TMC) estas donita per la sumo de la produktoj de ĉiu karaktero grandeco (T (c)) por lia limigoj probablo (P (c)). (La sama rezulto povas esti ricevita per simpla sumado de la probabloj de ĉiu interna nodo en la kodigo arbo).
En posedo de simboloj konstruita de la supra algoritmo, datuma kunpremo estas simple anstataŭante ĉiu simbolo kun lia responda kodo. Sekcio Ekzemplo montri la konstruo de arbo tretante kaj ankaŭ la kodigo de niaj datumoj uzante la aro de simboloj akiras de la arbo.

Ekzemplo

Por ilustri la funkciadon de la metodo, ni kunpremi la vico de signoj AAAAAABBBBBCCCCDDDEEF . Se ni uzi la norma formo de reprezento kie la amplekso de ĉiu signo estas fiksita, la plej malgranda kodigo ni povas uzi por reprezenti ĝin en duuma estas tri bitoj por karaktero. Tiel ni havas la sekvan kodon:
Karaktero La B C D E F
Kodo 000 001 010 011 100 101
Generante tiel la bitoj 000000000000000000001001001001001010010010010011011011100100101 por reprezenti nia originala vico. Tio donas al 63 bitoj longa.
Por uzi la Huffman kodo kaj kunpremi ĉi vico ni devas unue konstrui arbo Huffman sekvi la paŝojn pli supre. La unua paŝo estas kalkuli la spritaĵoj de ĉiu signo en la linio al esti kompresita. Kun ĉi tiu ni havas:
Karaktero La B C D E F
Grafo 6 5 4 3 2 1
Nun ni kolektos niajn Huffman arbo. En la diagramo sube oni vidas la nodoj kiuj reprezentas ĉiu simbolo, kaj markita en ruĝa la du nodoj kiuj estos kunigitaj en la unua paŝo. En kazo la nodoj E kaj F:
Huffmanpasso1.png
Ni vidas ĉi tiun duan bildon, en nigra, nodoj E kaj F kune en nodo oni nomas E + F, kaj havas la pezon egala al la sumo de la nodoj E kaj F. Ĉi tiu nova nodo estas enigita en la aro de nodoj al kiu nodoj elektos la apud aligxos. Hazarde, en ĉi tiu ekzemplo, la sekva ni estas tiu nova nodo nodo E + F kaj D, kiel montrita en la sekvanta figuro:
Huffmanpasso2.png
Daŭrigante la procezo nun aliĝi nodoj B kaj C:
Huffmanpasso3.png
La nodo A estas fine kunigitaj kun nodo D + E + F:
Huffmanpasso4.png
kaj la lasta kunigo nodoj A + D + E + F kun la Nodo B + C:
Huffmanpasso5.png
Generante nia Huffman arbo kiu estas nun severe duuma arbo:
Huffmanpasso6.png
En ĉi tiu arbo ni povas nun identigi la kodojn por ĉiu simbolo. Por ĉi tiu simple iru al la arbo kaj la simbolo "noto" por la respondaj bitoj randoj ili vojaĝis. Ekzemple, por preni la leteron D iri tra la bitoj 0 al nodo A + D + E + F, tiam iom 1 ĝis akiri D + E + F kaj tiam iom 0 denove, prenanta D. Do la Huffman kodo por la litero D estas 010 . Malsupre ni listigas Huffman kodojn por ĉiu el la simboloj ni uzas:
Karaktero La B C D E F
Grafo 00 10 11 010 0110 0111
Nun, por kodi nia originala vico ni havas: 000000000000101010101011111111010010010011001100111 totalizando nur 51 bitoj. Nia kunpremo estas 12 bitoj, aŭ ĉirkaŭ 20%.
En realaj kazoj la kunpremo akiris eblas multe pli alta, kiel la ofteco de tiaj simboloj estas sufiĉe granda, dum la alia estas preskaŭ nula (la vokaloj "a", "e", "i", "o" kaj "aŭ" okazi tre ofte, dum iuj literoj kiel "y", "k" aŭ "z" aperas multe malpli). Tiu granda diferenco en oftecoj faras la gravuloj pli oftaj, kaj konsekvence kun mallongaj simboloj, estas pli bone reprezentitaj ege pliigante la kunpremo rilatumo.

Bibliografio

  • Okazinta, Gilbert. Datumoj Kunpremo. Tatuapé, SP: Erica, 1998. 390 p. ISBN 85-7194-110-6
  • Nelson, Mark; Gailly, Jean-Loup. La datumoj Kunpremo Libro (angle). Nov-Jorko: M & T Libroj, 1996. 557 p. ISBN 1-55851-434-1
  • SALOMON, Davido. Datumoj Kunpremo: La Kompleta Vikipedio (en la angla). 2nd ed. Nov-Jorko: _Springer_, 2000. ISBN 0-387-95045-1
  • SALOMON, Davido. A Guide to Datumoj Kunpremo Metodoj (en la angla). Nov-Jorko: _Springer_, 2002. 295 p. ISBN 0-38795260-8
  • SAYOOD, Khalid. Enkonduko al Datumoj Kunpremo (en la angla). 2nd ed. Sankta Francisko: Morgan Kauffman, 2000. 636 p. ISBN 1-55860-558-4