Codifica aritmetica

La codifica aritmetica è una tecnica di compressione senza perdita di informazione. Normalmente in informatica i dati sono rappresentati come un insieme fisso di bit, per esempio i caratteri sono spesso rappresentati con otto bit. La codifica aritmetica partendo dal presupposto che alcuni simboli tendono ad apparire più frequentemente di altri assegna dei codici di lunghezza variabile ai simboli al fine di minimizzare il numero totale di bit da trasmettere. Questa strategia viene utilizzata anche da altri sistemi di codifica, come la codifica di Huffman, ma mentre la codifica di Huffman associa una specifica codifica a ogni singolo simbolo la codifica aritmetica associa una singola codifica all'intero messaggio o a blocchi di questo.

Funzionamento del sistema di codifica

Definizione del modello

La codifica aritmetica produce una compressione sub-ottima (secondo la teoria della compressione dei dati il valore ottimale è −log2P bit per ogni simbolo con probabilità P). L'algoritmo di compressione parte definendo un modello dei dati, una loro distribuzione probabilistica, questa influenza in misura preponderante la bontà della compressione.

Per esempio, un semplice modello statico potrebbe definire:

  • 60% di possibilità di avere un simbolo NEUTRO;
  • 20% di possibilità di avere un simbolo POSITIVO;
  • 10% di possibilità di avere un simbolo NEGATIVO;
  • 10% di possibilità di avere un simbolo di FINE-DEL-FILE (questo simbolo serve al decodificatore per dire che il flusso da decodificare è terminato).

Il modello di esempio utilizza solo quattro simboli ed è un modello didattico, ma conoscendo il contesto si possono sviluppare modelli più sofisticati, per esempio se si sa di dover codificare un testo in inglese si sa che la lettera "u" è molto più comune della lettera "Q" o "q" e quindi si potranno assegnare le probabilità di conseguenza. I modelli possono anche essere adattivi, in questo caso adattano le probabilità dei simboli all'andamento dei dati. Ovviamente il decodificatore deve conoscere il modello usato dal codificatore.

Un semplice esempio

Per chiarificare discuteremo un semplice esempio. Supponiamo di avere una sequenza di simboli, che provengono da un alfabeto con tre elementi: A, B, C. Un semplice codificatore a blocchi potrebbe trasformare ogni simbolo in una sequenza di due bit, ma sarebbe uno spreco, due bit possono esprimere quattro combinazioni e quindi una combinazione non verrebbe mai usata.

Possiamo pensare di rappresentare i simboli come un numero razionale compreso tra 0 e 1 in base 3 e di rappresentare ogni simbolo come una cifra del numero. Per esempio la sequenza "ABBCAB" verrebbe convertita in 0,0112013. Questa poi potrebbe essere convertita in base due e potrebbe diventare per esempio 0,0010110012 — questa sequenza usa 9 bit e al posto dei 12 bit richiesti da un codificatore ingenuo e quindi occupa il 25% in meno. Il decodificatore ovviamente dovrebbe fare i passi opposti per ottenere la sequenza di partenza.

Codifica e decodifica

In questa sezione si generalizzerà l'idea appena esposta, comunque i passi fondamentali sono gli stessi tranne che l'ultimo. Fondamentalmente si hanno tre passi:

  • Il nuovo simbolo viene prelevato;
  • Il corrente intervallo di codifica viene definito (all'inizio l'intervallo di codifica è quello massimo quindi [0,1) ma durante la codifica si riduce);
  • Si calcola la probabilità dei simboli, questo passo è necessario se l'algoritmo stima le probabilità durante la codifica, se sono definite in modo fisso questo passo non viene eseguito.

Il codificatore suddivide il corrente intervallo in un sottointervallo che viene calcolato tenendo conto della probabilità di un certo simbolo di comparire.

Seguendo l'esempio precedente suddividiamo gli intervalli tramite una probabilità fissa.

  • Il simbolo NEUTRO ha intervallo [0, 0,6)
  • Il simbolo POSITIVO ha intervallo [0,6, 0,8)
  • Il simbolo NEGATIVO ha intervallo [0,8, 0,9)
  • Il simbolo FINE-DEL-FILE ha intervallo [0,9, 1)

Quando tutti i simboli vengono codificati il risultato è un intervallo che identifica in modo non ambiguo la sequenza di simboli che l'ha generato. Quindi ogni sistema che conosce il modello e l'intervallo è in grado di ricostruire la sequenza di simboli.

Comunque non è necessario trasmettere l'intervallo, basta trasmettere una frazione che si trova all'interno dell'intervallo. In particolare basta trasmettere abbastanza cifre della frazione in modo da eliminare gli altri intervalli.

Esempio

Il diagramma mostra la decodifica del numero 0,538 nel nostro modello d'esempio, per semplicità si utilizza la notazione decimale invece di quella binaria. Come si vede dal diagramma gli intervalli vengono divisi in sottointervalli fino a quando non si incontra il simbolo di FINE-DEL-FILE.

Supponiamo di dover decodificare la serie di simboli associati al valore 0,538, si inizia la decodifica partendo con un intervallo [0, 1) e utilizzando il modello indicato sopra si divide l'intervallo in quattro sottointervalli. Il primo simbolo secondo il nostro modello è NEUTRO dato che il numero vale meno di 0,6 e quindi ricade nell'intervallo NEUTRO.

Adesso dividiamo l'intervallo [0, 0,6) in sottointervalli secondo le probabilità indicate all'inizio e otteniamo:

  • Il simbolo NEUTRO ha intervallo [0, 0,36) "60% dell'intervallo [0, 0,6)"
  • Il simbolo POSITIVO ha intervallo [0,36, 0,48) "20% dell'intervallo [0, 0,6)"
  • Il simbolo NEGATIVO ha intervallo [0,48, 0,54) "10% dell'intervallo [0, 0,6)"
  • Il simbolo FINE-DEL-FILE ha intervallo [0,54, 0,6) "10% dell'intervallo [0, 0,6)"

Il numero 0,538 ricade nell'intervallo [0,48, 0,54) e quindi il secondo simbolo è NEGATIVO.

Ripetiamo nuovamente la suddivisione del nuovo intervallo e otteniamo:

  • Il simbolo NEUTRO ha intervallo [0,48, 0,516) "60% dell'intervallo [0,48, 0,54)"
  • Il simbolo POSITIVO ha intervallo [0,516, 0,528) "20% dell'intervallo [0,48, 0,54)"
  • Il simbolo NEGATIVO ha intervallo [0,528, 0,534) "10% dell'intervallo [0,48, 0,54)"
  • Il simbolo FINE-DEL-FILE ha intervallo [0,534, 0,540) "10% dell'intervallo [0,48, 0,54)"

Il numero 0,538 ricade entro l'intervallo [0,535, 0,54) che appartiene al simbolo FINE-DEL-FILE quindi abbiamo raggiunto la fine del flusso di simboli da decodificare. È da notare che anche i numeri 0,534, 0,535, 0,536, 0,537 o 0,539 sarebbero andati comunque bene. Questo potrebbe far pensare che il sistema soffra di alcune inefficienze, in realtà questo si ottiene perché nell'esempio abbiamo lavorato in base decimale, convertendo il tutto in base binaria avremmo usato come numero di decodifica 0,10001010 (che in decimale vale 0,5390625) che costa 8 bit.

La nostra codifica occupa 8 bit che è meglio dei 12 bit utilizzati da un codificatore banale ma comunque sono molti più bit di quelli definiti a livello teorico. Secondo la teoria dell'entropia ogni simbolo dovrebbe occupare 1,57 bit che moltiplicato per i tre simboli trasmessi fa 4,71 bit. Questa differenza tra il miglior risultato a livello teorico e il risultato del codificatore è dovuto al numero ridotto di simboli codificati, all'aumento del numero di simboli da codificare la differenza con il risultato teorico si assottiglia notevolmente. Inoltre le probabilità indicate nell'esempio sono molto diverse da quelle presenti nel messaggio codificato. Le reali probabilità del messaggio sono [0,33, 0, 0,33, 0,33], usando queste probabilità gli intervalli sarebbero [0, 1/3); [1/9, 2/9); [5/27, 6/27); in binario diverrebbero [1011110, 1110001] e quindi si potrebbe inviare che solamente il valore 111 per indicare la sequenza di simboli. Questo mostra anche che una statistica sbagliata può peggiorare significativamente le prestazioni della codifica.

Precisione e rinormalizzazione

Gli esempi precedenti contengono delle semplificazioni, una di queste è che il decodificatore prima lavori con cifre a infinite precisione e che in seguito cerchi la frazione binaria. In realtà la maggior parte dei decodificatori lavorano con un numero di cifre finite pari al numero massimo di simboli da decodificare in modo da non dover far conversioni. Nell'esempio precedente quindi il decodificatore avrebbe utilizzato subito 8 bit di precisione.

Simbolo Probabilità (espressa come frazione) Intervallo indicato con otto bit di precisione (come frazione) Intervallo indicato con otto bit di precisione (in binario) Estremi in binario
A 1/3 [0, 85/256) [0,00000000, 0,01010101) 00000000 - 01010100
B 1/3 [85/256, 171/256) [0,01010101, 0,10101011) 01010101 - 10101010
C 1/3 [171/256, 1) [0,10101011, 1,00000000) 10101011 - 11111111

Il processo chiamato "rinormalizzazione" serve a mantenere la precisione finita durante la codifica dei simboli. Ogni volta che la gamma dei valori che specificano gli intervalli sono ridotti fino al punto di avere i bit iniziali degli intervalli iniziali questi sono inviati in fondo ai numeri binari. Questo nell'esempio trattato prima accede in due casi su tre.

Simbolo Probabilità Range Numero Range dopo la rinormalizzazione
A 1/3 00000000 - 01010100 0 00000000 - 10101001
B 1/3 01010101 - 10101010 None 01010101 - 10101010
C 1/3 10101011 - 11111111 1 01010110 - 11111111

Confronti con altri sistemi di compressione

Codifica Huffman

Lo stesso argomento in dettaglio: Codifica di Huffman.

Questa codifica si basa su principi simili a quelli della codifica aritmetica e in effetti può essere vista come un caso particolare della codifica aritmetica dato che la codifica aritmetica trasforma l'intero messaggio in un numero in base N mentre la codifica di Huffman rappresenta ogni simbolo come un elemento base N.

Si può considerare la codifica Huffman una codifica aritmetica che arrotonda la frequenza di ogni simbolo alla più vicina potenza di un mezzo (0,5). Per questo motivo la codifica di Huffman mostra dei risultati modesti se applicata ad alfabeti con distribuzioni del tipo 0,75 o 0,375. Le distribuzioni di questo tipo sono molto diffuse soprattutto in alfabeti con pochi simboli.

Per esempio si consideri l'alfabeto {a, b, c} con distribuzione equiprobabile di 1/3. La codifica Huffman produce i seguenti codici:

  • a → 0: 50%
  • b → 10: 25%
  • c → 11: 25%

Questi codici occupano (2+2+1)/3 ≈ 1,667 bit per simbolo con la codifica Huffman. La codifica aritmetica produce 1,585 bit per simbolo e quindi l'inefficienza è del 5%.

Ma se si considera un alfabeto binario del tipo {0, 1} con distribuzione 0,625 e 0,375, la codifica Huffman assegna a ogni simbolo la probabilità del 50% e quindi genera un alfabeto con due simboli, in sostanza non comprime i dati. La codifica aritmetica invece ottiene un incremento del:

1 - (0,625(−log2 0,625) + 0,375(−log2 0,375)) ≈ 4,6%.

Nel caso un simbolo sia molto più probabile per esempio supponendo che abbia una probabilità del 95% otteniamo un incremento del:

1 - (0,95(−log2 0,95) + 0,05(−log2 0,05)) ≈ 71,4%.

Un modo semplice per aggirare il problema è creare un nuovo alfabeto concatenando i simboli al fine di ottenere dei nuovi simboli con una distribuzione migliore per l'algoritmo. Per esempio si potrebbero concatenare i simboli al fine di ottenere:

  • 000: 85,7%
  • 001, 010, 100: 4,5%
  • 011, 101, 110: 0,24%
  • 111: 0,0125%

Questi verrebbero codificati con 1,3 bit per ogni gruppo di tre simboli quindi con 0,433 bit per simbolo, un notevole miglioramento rispetto al bit per simbolo della codifica iniziale.

Codifica a intervalli

La codifica a intervalli è un altro modo di vedere la codifica aritmetica. La codifica aritmetica è la codifica a intervalli sono sostanzialmente lo stesso concetto implementato in modo leggermente diverso. Spesso se si lavora su singoli bit si parla di codifica aritmetica mentre se si lavora su byte si parla di codifica a intervalli ma questa distinzione non è accettata universalmente. Spesso si afferma che questa codifica è libera da brevetti ma dato che il concetto che sta alla base è lo stesso l'affermazione è quantomeno dubbia.

L'idea che sta alla base della codifica è quello di prendere un intervallo e di suddividerlo in sottointervalli in modo proporzionale alla probabilità di ogni simbolo. Però a differenza della codifica aritmetica non si utilizza l'intervallo [0, 1) Ma un intervallo molto più grande, non negativo e intero, per esempio l'intervallo da 000 000 000 000 a 999 999 999 999. Quando i sottointervalli sono abbastanza differenziati da rendere nota la prima cifra questa viene spostata in fondo all'intervallo, questa operazione è come se portasse a una moltiplicazione dell'intervallo mantenendo sempre sufficienti numeri interi nell'intervallo.

Quindi se si trascura il fatto che l'intervallo è molto più grande e si usano numeri interi invece di frazioni le due tecniche sono uguali. Il fatto di applicare la moltiplicazione dell'intervallo sul byte (la codifica aritmetica effettua la rinormalizzazione sul bit) riduce leggermente la compressione ma questa compressione lavorando solo su numeri interi e mediamente più veloce della codifica aritmetica.

Brevetti

Molte implementazioni della codifica aritmetica sono protette da brevetti statunitensi. Diverse implementazioni inoltre sono utilizzate in standard internazionali, ma normalmente queste implementazioni sono distribuite con licenze RAND. Queste licenze a volte non prevedono il pagamento del brevetto per la maggior parte degli usi oppure prevedono compensi di modesta entità. Questo può essere accettabile per un software commerciale ma normalmente non è considerato ammissibile dai programmi open source e dal software libero in genere.

Tra le società note per il possesso di brevetti sulla codifica aritmetica si segnala IBM. È opinione diffusa che non si possano sviluppare algoritmi con codifica aritmetica senza infrangere un brevetto statunitense. Comunque alcuni brevetti sono scaduti e quindi in teoria si potrebbero utilizzare quelle implementazioni ma dato che non c'è la certezza che quelle implementazioni siano coperte parzialmente anche da brevetti successivi la maggior parte dei programmatori preferisce non utilizzare la codifica aritmetica.

Per esempio il programma bzip2 inizialmente gestiva la codifica aritmetica ma in seguito per paura dI cause legali i programmatori decisero di dismettere la codifica. Anche la codifica JPEG gestisce questa codifica insieme alla codifica Huffman, ma per evitare di dover pagare eventuali brevetti la maggior parte dei programmi gestisce solo la codifica di Huffman.

Tra i brevetti sulla codifica aritmetica si segnalano:

Nota: l'elenco non è esaustivo.

Benchmark e altri problemi tecnici

Ogni differente tecnica di codifica mostra un rapporto di compressione e un tempo di compressione diverso. Il fattore di compressione normalmente varia in modo insignificante (meno dell'1% normalmente) mentre i tempi di compressione e decompressione variano significativamente, alcuni metodi sono fino a dieci volte più rapidi di altri. La scelta del compressore migliore non risulta semplice dato che le prestazioni dipendono molto dai dati in ingresso. Alcuni compressori lavorano bene con pochi dati in ingresso, altri con alfabeti complessi, diversi lavorano solo con alfabeti binari.

Bibliografia

Altri progetti

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

Read other articles:

1992 video game This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Leather Goddesses of Phobos 2: Gas Pump Girls Meet the Pulsating Inconvenience from Planet X! – news · newspapers · books · scholar · JSTOR (July 2014) (Learn how and when to remove this template message) 1992 video gameLeather Goddesses of Phob...

 

Region Amoron'i ManiaRegionAntoetraLokasi di MadagaskarNegara MadagaskarIbu kotaAmbositraPemerintahan • GubernurAline MamiarisoaLuas[1] • Total16.141 km2 (6,232 sq mi)Populasi (2018)[2] • Total833.919 • Kepadatan52/km2 (130/sq mi)Zona waktuUTC3 (EAT)HDI (2018)0,528[3]rendah · ke-9 dari 22 Amoron'i Mania adalah sebuah region di Madagaskar bagian tengah, berbatasan dengan Vakinankaratra di seb...

 

Pour les articles homonymes, voir Reis. Cet article est une ébauche concernant les télécommunications et un ingénieur prussien. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Cet article ne cite pas suffisamment ses sources (janvier 2016). Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites ...

Artikel ini sudah memiliki referensi, tetapi tidak disertai kutipan yang cukup. Anda dapat membantu mengembangkan artikel ini dengan menambahkan lebih banyak kutipan pada teks artikel. (Januari 2024) (Pelajari cara dan kapan saatnya untuk menghapus pesan templat ini) Orang Yahudi Agama Yahudi Agama Tuhan Allah dalam Yudaisme Dasar Iman Yahudi Kaballah Hari raya Doa Halakha Mitzvot (Daftar: 613) Rabi Sinagoge Pembacaan gulungan Taurat Minhag/Kebiasaan Tzedakah Teks Tanakh: Taurat Nevi'im Ketuv...

 

1795 1798 Élections législatives françaises de 1797 177 députés 21 mars et 4 avril 1797 Type d’élection Élections législatives Corps électoral et résultats Votants ? Clichyens – Mathieu Dumas Voix ? 59,32 %   23,3 Députés élus 105  51 Indépendants – Lazare Carnot Voix ? 24,86 %  Députés élus 44 Thermidoriens – Paul Barras Voix ? 15,82 %   26,2 Députés élus 28  35 Repré...

 

American politician (1914–1986) Al UllmanChair of the House Ways and Means CommitteeIn officeDecember 10, 1974 – January 3, 1981Preceded byWilbur MillsSucceeded byDan RostenkowskiChair of the House Budget CommitteeIn officeJuly 12, 1974 – January 3, 1975Preceded byPosition establishedSucceeded byBrock AdamsCo-Chair of the Joint Budget Control CommitteeIn officeOctober 27, 1972 – April 18, 1973Serving with Jamie WhittenPreceded byPosition establishedS...

Zvolen CastleZvolen, Slovakia Zvolen castleZvolen CastleCoordinates48°34′23″N 19°07′38″E / 48.573056°N 19.127222°E / 48.573056; 19.127222Site historyBuilt1370sBuilt byLouis I of Hungary Zvolen Castle was strongly inspired by Italian castles of the fourteenth century Zvolen Castle (Slovak: Zvolenský zámok or incorrectly Zvolenský hrad is a medieval castle located on a hill near the center of Zvolen, in central Slovakia. The original seat of the regio...

 

Electricity from wind in one U.S. state 2003 US Department of Energy wind resource map of North Carolina Experimental NASA wind turbine on Howard's Knob in Boone (1978-1983) Wind power in North Carolina is found along the coastal areas in the east and mountain regions in the western part of the state.[1] The state has significant offshore wind resources. In 2015, small scale wind turbine projects were found throughout the state. In 2016, North Carolina's first large scale wind project...

 

Prouzel Le château. Blason Administration Pays France Région Hauts-de-France Département Somme Arrondissement Amiens Intercommunalité CC Somme Sud-Ouest Maire Mandat Nathalie Pizzaferri 2022-2026 Code postal 80160 Code commune 80643 Démographie Gentilé Prouzellois Populationmunicipale 567 hab. (2021 ) Densité 109 hab./km2 Géographie Coordonnées 49° 48′ 59″ nord, 2° 12′ 15″ est Altitude Min. 38 mMax. 129 m Superficie 5,19...

1995 rocket attacks on Croatian cities during the Croatian War of Independence For the 1991 air strike on Zagreb, see Bombing of the Banski Dvori. Zagreb rocket attacksThe body of Ana Mutevelić lying on the intersection of Vlaška and Draškovićeva streetsLocationZagreb, CroatiaDate2–3 May 1995TargetDowntown ZagrebZagreb AirportAttack typeArtillery rocket attackWeapons262 mm M-87 Orkan multiple rocket launcher armed with cluster bombsDeaths7Injured214[1]PerpetratorsArmy of the Rep...

 

周處除三害The Pig, The Snake and The Pigeon正式版海報基本资料导演黃精甫监制李烈黃江豐動作指導洪昰顥编剧黃精甫主演阮經天袁富華陳以文王淨李李仁謝瓊煖配乐盧律銘林孝親林思妤保卜摄影王金城剪辑黃精甫林雍益制片商一種態度電影股份有限公司片长134分鐘产地 臺灣语言國語粵語台語上映及发行上映日期 2023年10月6日 (2023-10-06)(台灣) 2023年11月2日 (2023-11-02)(香�...

 

哈比卜·布尔吉巴الحبيب بورقيبة‎第1任突尼斯总统任期1957年7月25日—1987年11月7日(30年105天)总理巴希·拉德加姆(英语:Bahi Ladgham)(1969年-1970年)赫迪·努伊拉(英语:Hedi Nouira)(1970年-1980年)穆罕默德·姆扎利(英语:Mohammed Mzali)(1980年-1986年)拉希德·斯法尔(英语:Rachid Sfar)(1986年-1987年)宰因·阿比丁·本·阿里(1987年)继任宰因·阿比丁·本·...

Sporting event delegationItaly at the2012 Summer OlympicsIOC codeITANOCItalian National Olympic CommitteeWebsitewww.coni.it (in Italian)in LondonCompetitors285 in 22 sportsFlag bearers Valentina Vezzali (opening)Daniele Molmenti (closing)MedalsRanked 9th Gold 8 Silver 9 Bronze 11 Total 28 Summer Olympics appearances (overview)189619001904190819121920192419281932193619481952195619601964196819721976198019841988199219962000200420082012201620202024Other related appearances1906 Intercala...

 

Political movement in the United States This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Black populism – news · newspapers · books · scholar · JSTOR (February 2007) (Learn how and when to remove this message) This article's lead section may be too short to adequately summarize the key points. Please consider...

 

1981 referendum 1981 Philippine constitutional plebiscite April 7, 1981 Changing the form of government For   79.53% Against   20.47% Certain prohibitions on elective officials For   78.95% Against   21.05% Allowing natural-born citizens who lost citizenship to own land For   77.55% Against   22.45% Politics of the Philippines Government Constitution of the Philippines Charter Change Laws Legal codes Taxation Executive President of the Philippines Bongbong ...

Brand of natural history television programming distributed by BBC Studios This article is about the factual programming brand. For the international channel, see BBC Earth (TV channel). This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: BBC Earth – news · newspapers · books · scholar · JSTOR (May 2018) (Learn ...

 

678m high mountain in Wales MaesglaseHighest pointElevation678.5 m (2,226 ft)Prominence318 m (1,043 ft)ListingMarilyn, Hewitt, NuttallCoordinates52°43′12″N 3°45′11″W / 52.720°N 3.753°W / 52.720; -3.753NamingEnglish translationblue/green fieldLanguage of nameWelshPronunciationWelsh: [mai̯sˈɡlasɛ]GeographyLocationSnowdonia, WalesParent rangeCadair IdrisOS gridSH817150Topo mapOS Explorer OL23 Listed summits of Maesglase Nam...

 

Questa voce o sezione sull'argomento attori pornografici non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Kelly TrumpKelly Trump al Venus festival nel 2008Dati biograficiNazionalità Germania Dati fisiciAltezza165 cm Peso53 kg Etniatedesca Occhiverdi Capellibiondi Seno naturaleno Misure100-60-88 Dati professionaliAltri pseudonimiKelly, Kelly ...

For the bay in New Zealand, see Matauri Bay. Commune in French Guiana, France Commune in French Guiana, FranceMatouryCommuneA view of the port of Larivot in MatouryLocation of the commune (in red) within French GuianaLocation of Matoury Coordinates: 4°50′50″N 52°19′52″W / 4.8472°N 52.3311°W / 4.8472; -52.3311CountryFranceOverseas region and departmentFrench GuianaArrondissementCayenneIntercommunalityCA Centre LittoralGovernment • Mayor (2020R...

 

LGBTQ rights in the U.S. Virgin IslandsUnited States Virgin Islands (US)StatusLegal since 1985Gender identityUnknownMilitaryYesDiscrimination protectionsSexual orientation and gender identity since 2022[1]Family rightsRecognition of relationshipsSame-sex marriage since 2015AdoptionYes In the U.S. Virgin Islands, Lesbian, gay, bisexual, and transgender (LGBT) rights have evolved substantially in recent years. Same-sex sexual activity has been legal since 1985. The region also provides...