Polynomial Time Algorithms in the Theory of Linear Diophantine Equations