Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dct
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ISC3
compression
dct
Commits
b34876b1
Verified
Commit
b34876b1
authored
1 month ago
by
iliya.saroukha
Browse files
Options
Downloads
Patches
Plain Diff
fix: typos
parent
d29bb3a9
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
report/report.qmd
+20
-19
20 additions, 19 deletions
report/report.qmd
with
20 additions
and
19 deletions
report/report.qmd
+
20
−
19
View file @
b34876b1
...
...
@@ -256,7 +256,7 @@ def compute_vitter_params(m: int) -> tuple[int, int]:
Étant donné que la longueur de notre alphabet est de 36, la valeur de $e$ est
égale à 5 et celle de $r$ est de 4. Sur la base de ses valeurs nous pouvons
donc calculer les codes fixes des divers caractères sur la base des règle
donc calculer les codes fixes des divers caractères sur la base des règle
s
suivantes :
- Si $0 \leq k \leq 2r$, alors le symbole $S_{k}$ est encodé par la
...
...
@@ -335,18 +335,18 @@ def encode(input: str) -> str:
```
Nous allons donc commencer par insérer dans l'arbre le nouveau caractère
rencontré via la fonction `insert_char`. Suite à cela nous ferons une
recherche
dans l'arbre pour calculer la partie NYT (_Not Yet Transmitted_) qui
servira
de préfixe au code fixe du caractère. Si ce caractère n'a pas encore
été
rencontré, il sera aussi inséré dans une structure de données de type `set`
qui
permet de stocker des données sans doublons. Ceci est critique du fait que
rencontré via la fonction `insert_char`. Suite à cela
,
nous ferons une
recherche
dans l'arbre pour calculer la partie NYT (_Not Yet Transmitted_) qui
servira
de préfixe au code fixe du caractère. Si ce caractère n'a pas encore
été
rencontré, il sera aussi inséré dans une structure de données de type `set`
qui
permet de stocker des données sans doublons. Ceci est critique du fait que
le code NYT établi à l'insertion initiale du caractère a possiblement changé
suite aux divers _swaps_
qui ont possibleme
nt eu lieu. Ces _swaps_ se
produisent
lorsque le poids du sous-arbre gauche est supérieur à celui d
e droite. Par
conséquent, si nous allons insérer à nouveau un
caractère connu au préalable
(i.e. présent dans le `set`), nous allons
recalculer le préfixe NYT du caractère
via la fonction `compute_prefix` en parcourant l'arbre jusqu'à retrouvé ce
caractère.
suite aux divers _swaps_
et autres insertions qui o
nt eu lieu. Ces _swaps_ se
produisent
lorsque le poids du sous-arbre gauche est supérieur à celui d
u
sous-arbre de droite. Par
conséquent, si nous allons insérer à nouveau un
caractère connu au préalable
(i.e. présent dans le `set`), nous allons
recalculer le préfixe NYT du caractère via la fonction `compute_prefix` en
parcourant l'arbre jusqu'à retrouver ce
caractère.
### Résultat de l'encodage
...
...
@@ -425,23 +425,24 @@ mésure jusqu'à retrouver la feuille NYT. À ce moment, il est nécessaire de
lire les $e$ bits suivants. Si la valeur de ceux-ci en base 10 est inférieur
à $r$, alors pour obtenir le symbole correspondant il est nécessaire de lire
les $(e + 1)$, de les convertir en base 10 et d'y ajouter 1. La valeur numérique
résultante sera la position dans
du
symbole dans l'alphabet. Si la valeur de
résultante sera la position dans symbole dans l'alphabet. Si la valeur de
$e$ est inférieur ou égale à $r$, il faut convertir ces bits en base 10 et d'y
ajouter la valeur $r + 1$.
Plus concrètement, nous allons en premier lieu nous débarasser des éventuels
Plus concrètement, nous allons en premier lieu nous débar
r
asser des éventuels
espaces dans la chaîne de caractères codées, puis nous allons lire cette chaîne
jusqu'à l'épuisement des bits dans celle
s
-ci. À l'intérieur de la boucle, nous
jusqu'à l'épuisement des bits dans celle-ci. À l'intérieur de la boucle, nous
commencerons par parcourir l'arbre jusqu'à la feuille NYT. Si la valeur du bit
actuel est 0, nous allons bifurquer à gauche, sinon à droite. Ayant recontré
actuel est 0, nous allons bifurquer à gauche, sinon à droite. Ayant re
n
contré
la feuille NYT, nous appliquerons l'algorithme énoncé précédemment pour
déterminer le caractère rencontré. Celui-ci, sera rajouté à la chaîne de
caractère finale et sera aussi insérer dans un `set` afin d'indiquer que ce
caractère fut recontré. Ceci est important du fait que lorsque ce caractère
caractère fut recontré. Ceci est important du
au
fait que lorsque ce caractère
sera à nouveau rencontré, le parcours de l'arbre ne se fera plus jusqu'à une
feuille NYT et par conséquent le code NYT ne sera plus présent dans la chaîne
décodée. Ce cas est présenté par le branchement conditionnel à la ligne 43.
L'implémentation de cette fonction se trouve ci-dessous :
décodée à la suite de ce caractère. Ce cas est présenté par le branchement
conditionnel à la ligne 43. L'implémentation de cette fonction se trouve
ci-dessous :
```python
def decode(encoded: str) -> (str, str):
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment