Skip to content

A research project studying the probability that random functions are injective

License

Notifications You must be signed in to change notification settings

ClaytonMcCray/injectionAnalysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a research project where I'm studying the injectiveness of random functions. Random as in f: D -> C where
f(x) = rand(x). Right now I'm essentially looking at two things -- how does the probability that a random function
is injective change as the domain and codomain both get arbitrarily large while maintaining a fixed ratio
r = size(codomain)/size(domain), and how does the probability change as the codomain gets large but the domain
remains fixed in size. 

The algortithm for determining if a function is injective resides in checkInjective.cpp. build.sh (tested on MacOS
and Fedora Workstation 29) will build a shared library under pwd/lib/$OSTYPE/. pyInjective.py is an API
to that shared object. analysisLib.py contains functions for actually anaylyzing things and making predictions.
analysis_driver.py is where tests are actually run.

To run the project in whatever its current config is, just clone the repo, run build.sh, install matplotlib,
and then run the driver.

Requirements:
python 3.6 (minimum version tested)
matplotlib
CUDA capable NVIDIA GPU
CUDA Toolkit
gcc <= v.7

About

A research project studying the probability that random functions are injective

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published