{
"metadata": {
"name": "",
"signature": "sha256:fa2fd07ed6e0fc1ace5cab484e4501c78dd7f3438d60d9c7d3d427c0aaaa5f4e"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Discussion5. Let's play with Fountain codes!\n",
"\n",
"I grabbed & modified an open-source implementation of Fountain Code from here. \n",
"https://github.com/dbieber/fountaincode\n",
"\n",
"Here are implementations."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1) Packet Class & Utility functions\n",
"\n",
"A packet consists of...\n",
"\n",
"###[ 'seed', 'num_chunks', 'data' ]\n",
"\n",
"seed = with this seed number, the decoder can figure out 1) how many packets are 'XOR'ed, and 2) which packets are chosen.\n",
"\n",
"num_chunks = total # of chunks for this data\n",
"\n",
"data = 'XOR'ed data"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"## Specifying degree distribution!\n",
"degree_distribution = 'bieber'\n",
"#degree_distribution = 'single'\n",
"#degree_distribution = 'sd'"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import json\n",
"import random\n",
"\n",
"class Packet:\n",
" def __init__(self, data, seed, num_chunks):\n",
" self.data = data\n",
" self.seed = seed\n",
" self.num_chunks = num_chunks\n",
"\n",
" def chunkNums(self):\n",
" random.seed(self.seed)\n",
" return randChunkNums(self.num_chunks)\n",
"\n",
" def toString(self):\n",
" return json.dumps(\n",
" {\n",
" 'seed':self.seed,\n",
" 'num_chunks':self.num_chunks,\n",
" 'data':self.data\n",
" })"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def charN(str, N):\n",
" if N < len(str):\n",
" return str[N]\n",
" return 'X'\n",
" \n",
"def xor(str1, str2):\n",
" length = max(len(str1),len(str2))\n",
" return ''.join(chr(ord(charN(str1,i)) ^ ord(charN(str2,i))) for i in xrange(length))\n",
"\n",
"def randChunkNums(num_chunks):\n",
" if degree_distribution == 'single':\n",
" size = 1\n",
" elif degree_distribution == 'bieber':\n",
" size = random.randint(1,min(5, num_chunks))\n",
" elif degree_distribution == 'sd':\n",
" tmp = random.random()\n",
" size = -1\n",
" for i in range(2, num_chunks + 1):\n",
" if tmp > 1/double(i):\n",
" size = int(ceil(1/tmp))\n",
" break\n",
" if size == -1:\n",
" size = 1\n",
" return random.sample(xrange(num_chunks), size)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2) Encoder Class\n",
"\n",
"You can initiate an encoder with a string! Then, generate_packet() will return a randomly encoded packet."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Encoder:\n",
" def __init__(self, data, chunk_size=32, seed=None):\n",
" self.data = data\n",
" self.chunk_size = chunk_size\n",
" self.num_chunks = int(ceil(len(data) / float(chunk_size)))\n",
" self.seed = seed\n",
" random.seed(seed)\n",
"\n",
" def generate_packet(self):\n",
" self.updateSeed()\n",
" chunk_nums = randChunkNums(self.num_chunks)\n",
" data = None\n",
" for num in chunk_nums:\n",
" if data is None:\n",
" data = self.chunk(num)\n",
" else:\n",
" data = xor(data, self.chunk(num))\n",
"\n",
" return Packet(data, self.seed, self.num_chunks)\n",
"\n",
" def chunk(self, num):\n",
" start = self.chunk_size * num\n",
" end = min(self.chunk_size * (num+1), len(self.data))\n",
" return self.data[start:end]\n",
"\n",
" def updateSeed(self):\n",
" self.seed = random.randint(0,2**31-1)\n",
" random.seed(self.seed)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3) Decoder Class\n",
"\n",
"You can initiate a decoder with the total number of chunks. Then, add_packet() will add a received packet to the decoder."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Decoder:\n",
" def __init__(self, num_chunks):\n",
" self.entries = []\n",
" self.packets = []\n",
" self.num_chunks = num_chunks\n",
" self.chunks = [None] * num_chunks\n",
" \n",
" def add_packet(self, d):\n",
" self.packets.append(d)\n",
" entry = [d.chunkNums(), d.data]\n",
" self.entries.append(entry)\n",
" self.updateEntry(entry)\n",
" \n",
" def updateEntry(self, entry):\n",
" for chunk_num in entry[0]:\n",
" if self.chunks[chunk_num] is not None:\n",
" entry[1] = xor(entry[1], self.chunks[chunk_num])\n",
" entry[0].remove(chunk_num)\n",
" if len(entry[0]) == 1:\n",
" self.chunks[entry[0][0]] = entry[1]\n",
" self.entries.remove(entry)\n",
" for d in self.entries:\n",
" if entry[0][0] in d[0]:\n",
" self.updateEntry(d)\n",
" \n",
" def getString(self):\n",
" return ''.join(x or ' _ ' for x in self.chunks)\n",
" \n",
" def isDone(self):\n",
" return None not in self.chunks\n",
"\n",
" def chunksDone(self):\n",
" count = 0\n",
" for c in self.chunks:\n",
" if c is not None:\n",
" count+=1\n",
" return count"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4) Test!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"m = \"HELLO WORLD, MY NAME IS KANGWOOK LEE! WELCOME TO EE126 DISCUSSION 5! YOU GUYS ARE ATTENDING MY DISCUSSION SECTIONSSSSSSSSSSSSSSSSSSS. HELLO EE126! WHAT should I WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only slightly larger than the number of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A fountain code is optimal if the original k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k source symbols from any k\u2019 of the encoding symbols with high probability, where k\u2019 is just slightly larger than k. LT codes were the first practical realization of fountain codes. Raptor codes and online codes were subsequently introduced, and achieve linear time encoding and decoding complexity through a pre-coding stage of the input symbols.\"\n",
"enc = Encoder(m)\n",
"n_packets = enc.num_chunks\n",
"print \"Number of packets =\", n_packets"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Number of packets = 40\n"
]
}
],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dec = Decoder(n_packets)\n",
"\n",
"ct = 0\n",
"while not dec.isDone():\n",
" ct += 1\n",
" print \"[[[[[ Received %03d-th packet. ]]]]]\" % ct\n",
" dec.add_packet(enc.generate_packet())\n",
" print dec.getString()\n",
" print ''\n",
" \n",
"print '# of packets received', ct"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[[[[[ Received 001-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ from any subset of the encoding _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 002-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ from any subset of the encoding _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 003-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recov _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 004-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recov _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 005-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated fr _ _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recov _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 006-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated fr _ _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recov _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 007-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated fr _ _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 008-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated fr _ _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 009-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated fr _ _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 010-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 011-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 012-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 013-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 014-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 015-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 016-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 017-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 018-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 019-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 020-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 021-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 022-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 023-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 024-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 025-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ _ _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ _ _ _ _ \n",
"\n",
"[[[[[ Received 026-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ ently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 027-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ ently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 028-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ _ ently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 029-th packet. ]]]]]\n",
" _ _ _ _ _ _ _ _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 030-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and deco _ _ _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 031-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow t _ _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 032-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow t _ _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 033-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow t _ _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 034-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow t _ _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 035-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow t _ _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 036-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 037-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 038-th packet. ]]]]]\n",
" _ _ _ _ _ _ oding theory, fountain codes (al _ _ _ _ ding symbols can be generated from a given set of source symbols _ _ from any subset of the encoding _ _ of source symbols. The term fou _ _ _ _ al k source symbols can be recovered from any k encoding symbols _ have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 039-th packet. ]]]]]\n",
" _ _ _ _ _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure cod _ _ _ ding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the _ _ _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ _ _ _ _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 040-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ _ _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure cod _ _ _ ding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the _ _ _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just sli _ re the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 041-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ _ _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure cod _ _ _ ding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the _ _ _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just sli _ re the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 042-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ _ _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure cod _ _ _ ding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the _ _ _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just sli _ re the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ _ \n",
"\n",
"[[[[[ Received 043-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the _ ibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 044-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the _ ibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 045-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the _ ibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 046-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 047-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 048-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve li _ _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 049-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 050-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 051-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 052-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 053-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 054-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 055-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 056-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 057-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 058-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 059-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 060-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 061-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 062-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 063-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 064-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 065-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 066-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 067-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 068-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 069-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 070-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK _ _ ISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A founta _ al k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k so _ _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding _ stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 071-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK LEE! WELCOME TO EE126 DISCUSSION 5! YOU GUYS ARE ATTENDING MY DISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A fountain code is optimal if the original k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k source symbols from any k\u2019 of th _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding complexity through a pre-coding stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 072-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK LEE! WELCOME TO EE126 DISCUSSION 5! YOU GUYS ARE ATTENDING MY DISCUSSION SECTIONSSSSSSSSSSSSSSS _ WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only _ of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A fountain code is optimal if the original k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k source symbols from any k\u2019 of th _ bability, where k\u2019 is just slightly larger than k. LT codes were the first practical realizati _ es and online codes were subsequently introduced, and achieve linear time encoding and decoding complexity through a pre-coding stage of the input symbols.XXXXX\n",
"\n",
"[[[[[ Received 073-th packet. ]]]]]\n",
"HELLO WORLD, MY NAME IS KANGWOOK LEE! WELCOME TO EE126 DISCUSSION 5! YOU GUYS ARE ATTENDING MY DISCUSSION SECTIONSSSSSSSSSSSSSSSSSSS. HELLO EE126! WHAT should I WRITE here? Um. LET's SEE. In coding theory, fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only slightly larger than the number of source symbols. The term fountain or rateless refers to the fact that these codes do not exhibit a fixed code rate. A fountain code is optimal if the original k source symbols can be recovered from any k encoding symbols. Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original k source symbols from any k\u2019 of the encoding symbols with high probability, where k\u2019 is just slightly larger than k. LT codes were the first practical realization of fountain codes. Raptor codes and online codes were subsequently introduced, and achieve linear time encoding and decoding complexity through a pre-coding stage of the input symbols.XXXXX\n",
"\n",
"# of packets received 73\n"
]
}
],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Performance\n",
"\n",
"Let's plot a histogram of the number of packets required to succesfully decode the signal!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"## Specifying degree distribution!\n",
"#degree_distribution = 'bieber'\n",
"#degree_distribution = 'single'\n",
"degree_distribution = 'sd'\n",
"\n",
"dec = Decoder(enc.num_chunks)\n",
"\n",
"n_sim = 500\n",
"res = []\n",
"for i in range(n_sim):\n",
" ct = 0\n",
" dec = Decoder(enc.num_chunks)\n",
" while not dec.isDone():\n",
" ct += 1\n",
" dec.add_packet(enc.generate_packet())\n",
" res.append(ct)\n",
"res = array(res)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"res_normalized = res / double(n_packets)\n",
"plt.hist(res_normalized, 100)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
"(array([ 3., 5., 15., 15., 33., 35., 28., 38., 28., 22., 25.,\n",
" 11., 19., 20., 12., 21., 21., 10., 10., 9., 14., 12.,\n",
" 10., 7., 6., 5., 2., 5., 3., 3., 6., 4., 4.,\n",
" 3., 4., 3., 3., 3., 2., 1., 2., 0., 2., 1.,\n",
" 0., 1., 0., 2., 0., 0., 1., 0., 2., 0., 1.,\n",
" 0., 0., 0., 1., 1., 1., 0., 0., 0., 0., 1.,\n",
" 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 1., 1., 0., 0., 0., 0., 0., 0.,\n",
" 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0.,\n",
" 1.]),\n",
" array([ 1.15, 1.2 , 1.25, 1.3 , 1.35, 1.4 , 1.45, 1.5 , 1.55,\n",
" 1.6 , 1.65, 1.7 , 1.75, 1.8 , 1.85, 1.9 , 1.95, 2. ,\n",
" 2.05, 2.1 , 2.15, 2.2 , 2.25, 2.3 , 2.35, 2.4 , 2.45,\n",
" 2.5 , 2.55, 2.6 , 2.65, 2.7 , 2.75, 2.8 , 2.85, 2.9 ,\n",
" 2.95, 3. , 3.05, 3.1 , 3.15, 3.2 , 3.25, 3.3 , 3.35,\n",
" 3.4 , 3.45, 3.5 , 3.55, 3.6 , 3.65, 3.7 , 3.75, 3.8 ,\n",
" 3.85, 3.9 , 3.95, 4. , 4.05, 4.1 , 4.15, 4.2 , 4.25,\n",
" 4.3 , 4.35, 4.4 , 4.45, 4.5 , 4.55, 4.6 , 4.65, 4.7 ,\n",
" 4.75, 4.8 , 4.85, 4.9 , 4.95, 5. , 5.05, 5.1 , 5.15,\n",
" 5.2 , 5.25, 5.3 , 5.35, 5.4 , 5.45, 5.5 , 5.55, 5.6 ,\n",
" 5.65, 5.7 , 5.75, 5.8 , 5.85, 5.9 , 5.95, 6. , 6.05,\n",
" 6.1 , 6.15]),\n",
" )"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
""
]
}
],
"prompt_number": 34
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"avg_ct = sum(res_normalized)/len(res_normalized)\n",
"print avg_ct"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"1.8875\n"
]
}
],
"prompt_number": 35
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Coupon collector"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"log(40) + 0.57 + 0.5/40"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 32,
"text": [
"4.2713794541139363"
]
}
],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}