Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
datovky
ds2-notes
Commits
b662898c
Commit
b662898c
authored
Aug 31, 2021
by
Filip Stedronsky
Browse files
Succinct: mixers intro
parent
bd3aaf80
Changes
3
Hide whitespace changes
Inline
Side-by-side
fs-succinct/Makefile
View file @
b662898c
TOP
=
..
PICS
=
sole sole_boxes sole_hilevel
PICS
=
sole sole_boxes sole_hilevel
mixer
include
../Makerules
...
...
fs-succinct/mixer.asy
0 → 100644
View file @
b662898c
import succinct_common;
real r = 1.5;
real dist=2;
mixer(0,0,r);
draw((-dist,0)--(-r,0), e_arrow);
draw((r,0)--(dist,0), e_arrow);
draw((0,-r)--(0,-dist), e_arrow);
draw((0,dist)--(0,r), e_arrow);
label((0, dist), "\vbox{\hbox{$x\in[X]$}\hbox{\eightrm (input)}}", N);
label((-dist, 0), "\vbox{\hbox{$y\in[Y]$}\hbox{\eightrm (carry in)}}", W);
label((dist, 0), "\vbox{\hbox{$s\in[S]$}\hbox{\eightrm (carry out)}}", E);
label((0, -dist), "\vbox{\hbox{$m\in[2^M]$}\hbox{\eightrm (output)}}", S);
label((0, 0), "$t\in [T]$");
fs-succinct/succinct.tex
View file @
b662898c
...
...
@@ -141,7 +141,7 @@ the alphabet [88] (by the simple transformation of $8x + y$). We can then split
that character again into two in a different way. For example into two characters
from alphabets [9] and [10]. This can be accomplished by simple division with
remainder: if the original character is
$
z
\in
[
88
]
$
, we transform in into
$
\lfloor
z
/
10
\rfloor
$
and
$
(
z
\
;
{
\rm
mod
}
\;
10
)
$
. For example, if we start
$
\lfloor
z
/
10
\rfloor
$
and
$
(
z
\
bmod
10
)
$
. For example, if we start
with the characters 6 and 5, they first get combined to form
$
6
\cdot
8
+
5
=
53
$
and then split into 5 and 3.
...
...
@@ -233,4 +233,33 @@ into the output. The final carry is then used to output some extra blocks at the
\subsection
{
Generalizing the mixer concept
}
\figure
[mixer]
{
mixer.pdf
}{}{
General structure of a mixer
}
At a high level, a mixer can be thought of as a mapping
$
f:
[
X
]
\times
[
Y
]
\rightarrow
[
2
^
M
]
\times
[
S
]
$
with the property that when
$
(
m,s
)
=
f
(
x,y
)
$
,
$
s
$
depends only on
$
x
$
.
Internally, the a mixer is
always implemented as a composition of two mappings,
$
f
_
1
$
that transforms
$
x
\rightarrow
(
t,s
)
$
and
$
f
2
$
that transforms
$
(
y,t
)
\rightarrow
m
$
. See fig.
\figref
{
mixer
}
. Both
$
f
_
1
$
and
$
f
_
2
$
must be injective
so that the encoding is reversible.
The mappings
$
f
_
1
$
and
$
f
_
2
$
themselves are trivial alphabet translations similar to what we
used in the SOLE encoding. You can for example use
$
f
_
1
(
x
)
=
(
\lceil
x
/
S
\rceil
, x
\bmod
S
)
$
and
$
f
_
2
(
y,t
)
=
t
\cdot
Y
+
y
$
.
Thus implementing the mixer is simple as long as the parameters allow its existence. A mixer
with parameters
$
X
$
,
$
Y
$
,
$
S
$
,
$
M
$
can exist if and only if there exists
$
T
$
such that
$
S
\cdot
T
\le
X
$
and
$
2
^
M
\le
T
\cdot
Y
$
(once again, the alphabet translations need their
range to be as large as their domain in order to work).
\subsection
{
On the existence of certain kinds of mixers
}
Now we would like to show that mixers with certain parameters do exist.
\lemma
{
For
$
X,Y
\le
2
^
w
$
there exists a mixer
$
f:
[
X
]
\times
[
Y
]
\rightarrow
[
2
^
M
]
\times
[
S
]
$
such that:
\tightlist
{
o
}
\:
$
S
=
\O
(
\sqrt
{
X
}
)
$
\endlist
}
\endchapter
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment