Giter Club home page Giter Club logo

symmetric_ldpc's Introduction

Simulation of symmetric blind reconciliation protocol for quantum key distribution systems

1. General description

Repository contains simulation of symmetric blind reconciliation algorithm realized in Python 2.7.

2. Files contents

2.1. test_error_correction.py

Launches a simulaiton of the symmetric blind reconciliation for the current number of tries and QBER values. Keeps the result in output.txt.

2.2. error_correction_lib.py

Contains basic procedures for performing a test of reconciliation protocol. It includes:

  • generation of random keys (bit strings);
  • adding errors in accordance withc given level of quantum bit error rate (QBER);
  • choosing an appropriate rate of LDPC code among a given range and numbers of shortened and punctured bits;
  • generation of positions for shortened and punctured bit;
  • extending key with shortened and punctured bits;
  • syndrome encoding;
  • syndrome decoding;
  • performing symmetric blind reconciliation for given pair keys;
  • testing of the full procedure of information reconciliation, including generation of keys, addings errors, and collection of statistics;

2.3. codes_1944.txt

Pool of four standard LDPC codes of block length 1944 together with positions for untanited puncturing. The set of code rates is {5/6, 3/4, 2/3, 1/2}.

2.4. codes_4000.txt

Pool of nine LDPC codes with block length 4000, constructed with improved progressive edge growing algorithm with particular distribuition polynomials togeteher with postions for untanited puncturing. The set of code rates is {0.9, 0.85, ..., 0.5}.

2.5. file_utils.py

Contains some auxiliary procedures for reading files with codes.

3. Notes about storage of parity-check matrices

The storage of parity-check matrices is based on two variables: s_y_joins and y_s_joins. They contains positions of nonzero elements for each row and column correspondigly. For example, for the matrix

H = 
1 1 0 1
1 0 1 1
0 1 1 0

one has

s_y_joins = [[0,1,3], [0,2,3],[1,2]]
y_s_joins = [[0,1],[0,2], [1,2],[0,1]]

symmetric_ldpc's People

Contributors

ekiktenko avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.