Toggle menu
310,5 tis.
62
18
548 tis.
Hrvatska internetska enciklopedija
Toggle preferences menu
Toggle personal menu
Niste prijavljeni
Your IP address will be publicly visible if you make any edits.

N-torka

Izvor: Hrvatska internetska enciklopedija

U matematici, n-torka (engl. tuple) je konačan niz (također poznat kao "uređena lista") od n objekata, svaki od kojih je specificiranog tipa. Primjerice, "četvorka" s komponentama OSOBA, DAN, MJESEC i GODINA se može rabiti za bilježenje zapisa da je određena osoba rođena određenog dana određenog mjeseca određene godine.

N-torke se rabe za opis matematičkih objekata koji se sastoje od specificiranih dijelova. Primjerice, usmjereni graf je definiran kao n-torka (V, E) pri čemu je V skup vrhova (čvorova) i E podskup od V × V koji označuje bridove. Tip prvog objekta jest "skup vrhova" dok je tip drugog "skup bridova".

Imena n-torki

Naziv "torka" se u hrvatskom jeziku ne rabi, već gotovo isključivo "n-torka" označujući duljinu od n elemenata. 2-torka se zove dvojka ili par, 3-torka je trojka i tako dalje. N može biti bilo koji nenegativni cijeli broj. Primjerice, kompleksni broj može biti predstavljen dvojkom, i kvaternion može biti predstavljen četvorkom.

Formalne definicije

Glavna svojstva koja razlikuju n-torku od, na primjer, skupa, su:

  1. n-torka može sadržavati objekt više nego jednom, i
  2. objekti se mogu pojavljivati u određenom redoslijedu.

Valja uočiti da (1) razlikuje n-torku od uređenog skupa i da (2) razlikuje n-torku od multiskupa. Ovo je često formalizirano dajući sljedeće pravilo za jednakost dvaju n-torki:

(a1, a2, …,an) = (b1, b2, …, bn) ↔ a1 = b1, a2 = b2, …, an = bn.

Budući da je n-torka indeksirana brojevima 1…n (ili 0…n-1), može se shvatiti kao funkcija koja preslikava iz podskupa od :

(a1, a2, …,an) ≡ fa: ℕn → A: iai.

Drugi je način formaliziranja n-torki preslikavanjem u primitivnije konstrukte teorije skupova kao što je uređeni par. Primjerice, n-torka (sa n > 2) se može definirati kao uređen par svojeg prvog elementa i (n−1)-torke koja sadrži sve ostale:

(a1, a2, …, an) = (a1, (a2, …, an))

Rabeći uobičajenu definiciju uređenog para teorijom skupova i predstavljajući praznu n-torku (0-torku) praznim skupom, slijedi sljedeća induktivna definicija:

  1. 0-torka (tj. prazna n-torka) je predstavljena sa
  2. ako je x n-torka tada {{a}, {a, x}} je (n + 1)-torka.

Rabeći ovu definiciju, (1,2,2) bi bilo

(1,(2,(2,))) = (1,(2, {{2}, {2, }} )) = (1, {{2}, {2, {{2}, {2, }}}} ) = {{1}, {1, {{2}, {2, {{2}, {2, }}}}}}

Ovdje postoji važna sličnost s Lispom koji je izvorno koristio apstrakciju uređenog para kako bi induktivno stvorio strukture n-torki i listi:

  1. istaknuti simbol NIL predstavlja praznu listu;
  2. ako je X lista i A proizvoljna vrijednost, tada par (A X) predstavlja listu s glavom (tj. prvim elementom) A i repom (tj. ostatkom liste bez glave) X.

Uporaba u računarstvu

U računarstvu, n-torka ima tri različita značenja. Tipično u funkcijskim i nekim drugim programskim jezicima, n-torka je podatkovni objekt koji sadrži nekoliko drugih objekata, sličan matematičkoj n-torci. Takav objekt je također poznat kao zapis[1].

Programski jezik Eiffel

Programski jezik Eiffel ima ugrađenu podršku za n-torke. Tip

  TUPLE [X, Y, Z]

ima, kao svoje vrijednosti, n-torke od tri ili više elemenata, od kojih je prvi tipa X, drugi tipa Y i treći tipa Z. Ovo također može biti napisano rabeći oznake (tag):

  TUPLE [oznaka1: X, oznaka2: Y, oznaka3: Z]

bez utjecaja na rezultirajući tip. Stvarna n-torka, koja odgovara ovom tipu, je zapisana rabeći uglate zagrade, primjerice

   [x1, y1, z1]

pri čemu je x1 tipa X itd. Ako je t takva n-torka, njenim se elementima može pristupiti rabeći oznake, npr. t.oznaka1 itd.; kao i postaviti na isti način, npr. t.oznaka2 := y2 što zamjenjuje drugi element, tipa Y, vrijednošću y2. Vrijednosti tipa TUPLE [X, Y, Z] može biti dodijeljena varijabla istog tipa ali također i ona tipa TUPLE [X, Y] ili TUPLE [X], ili samo TUPLE što pokriva sve n-torke. Ovo se može ostvariti zahvaljujući definiciji da TUPLE [X, Y], primjerice, pokriva nizove od barem (mjesto točno) dva elementa, za prva dva od dana tipa. Tipovi n-torki se dobro uklapaju u objektno orijentirani kontekst, gdje štede pisanje u klasu u slučaju gdje je sve što je potrebno jest jednostavni niz vrijednosti s pridruženim mehanizmima dohvata i postavljanja za svako polje.

Programski jezik C++

U programskom jeziku C++ 11 podržan je tuple[2].

#include <tuple>
#include <iostream>
#include <string>
 
int main()
{
    // izradi novi 'tuple' s tri komponente (decimalni broj 3.8, znak A, niz znakova "Lisa Simpson")
    auto student0 = std::make_tuple(3.8, 'A', "Lisa Simpson");
    std::cout << "ID: 0, "
              // ispisi 0. clan student0
              << "GPA: " << std::get<0>(student0) << ", "
              // ispisi 1. clan student0
              << "grade: " << std::get<1>(student0) << ", "
              // ispisi 2. clan student0
              << "name: " << std::get<2>(student0) << '\n';
 
    double gpa1;
    char grade1;
    std::string name1;
    // izradi 'tuple' s tri komponente (decimalni broj 2.9, znak C, niz znakova "Milhouse Van Houten")
    // zatim raspodijeli komponente po varijablama gpa1 (tipa decimalni broj), grade1 (tipa znak) te name1 (tipa niz znakova)
    std::tie(gpa1, grade1, name1) = std::make_tuple(2.9, 'C', "Milhouse Van Houten");
    std::cout << "ID: 1, "
              // ispisi vrijednost varijable gpa1
              << "GPA: " << gpa1 << ", "
              // ispisi vrijednost varijable grade1
              << "grade: " << grade1 << ", "
              // ispisi vrijednost varijable name1
              << "name: " << name1 << '\n';
}

Modeliranje informacija

S inherentnim svojstvima para Ime/Vrijednost, skupa sa strukturiranom i uređenom naravi, naziv 'n-torka' se prirodno proširuje za porabu u modeliranju informacija i definiciji baza podataka.

Primjerice, XML n-torke predstavljaju strukture n-torki Ime/Vrijednost. Slijedi primjer XML n-torke:

   <ime>Vrijednost</ime>

Imena polja

U nekim jezicima, napose u teoriji baza podataka, n-torka je definirana kao konačna funkcija koja preslikava imena polja u određene vrijednosti. Svrha joj je ista kao u matematici, da indicira da se određeni entitet ili objekt sastoji od određenih dijelova i/ili ima određena svojstva, s tim da su ovdje ti dijelovi identificirani jedinstvenim imenom polja a ne pozicijom, što često vodi ka prijemčivijoj notaciji. Općenit naziv za ovakav konstrukt jest asocijativni niz - drugi programski jezici imaju druga imena za ovaj koncept.

Mali primjer n-torke bi bio:

( igrač : "Ivan", bodovi : 25 )

što predstavlja funkciju koja preslikava ime polja "igrač" u string "Ivan" i ime polja "bodovi" u broj 25. Valja uočiti da je redoslijed dijelova n-torke nebitan, te da stoga može biti napisana kao:

( bodovi : 25, igrač : "Ivan" )

U relacijskom su modelu takve n-torke obično korištene za predstavljanje jednog iskaza - u ovom slučaju postoji jedan igrač imena "Ivan" i bodova "25".

U programskim su jezicima n-torke korištene za oblikovanje podatkovnih struktura. Primjerice, sljedeće bi mogla biti struktura koja predstavlja čvor u dvostruko vezanoj listi:

( vrijednost : 16, prethodni-čvor : 1174782, sljedeći-čvor : 1174791 )

Vanjske poveznice

Izvori