Patent ID: 7756899

Claim:
A computer-implemented method for reconstructing two or more files from a set of fragments of the files, the method comprising: a) accepting, by using a computer, adjacency scores for each pair of fragments from the set of fragments; b) identifying header fragments from among the fragments of the set of fragments; c) for each header fragment of the header fragments identified in act (b), i) setting a current fragment to the identified header fragment, ii) selecting, from among any one of the fragments of the set not identified as a header fragment, a fragment with a highest adjacency score with the current fragment, iii) checking to determine if the selected fragment of a file started with the identified header fragment has a better adjacency score with any of other fragments not identified as a header fragment than with the current fragment of the file started with the identified header fragment, iv) if the selected fragment of the file started with the identified header fragment has a better adjacency score with any of the other fragments not identified as a header than with the current fragment of the file started with the identified header fragment, then (A) selecting another fragment, from among any one of the fragments of the set not identified as a header fragment, a fragment with a next highest adjacency score with the current fragment of the file started with the identified header fragment, and (B) repeating act (iii) and (iv), and if the selected fragment of the file started with the identified header fragment does not have a better adjacency score with any of the other fragments not identified as a header than with the current fragment of the file started with the identified header fragment, then (C) provisionally adding the selected fragment of the file started with the identified header fragment to a reassembly path started with the identified header fragment, and D) setting the current fragment of the file started with the identified header fragment to the selected fragment of the file started with the identified header fragment; d) determining, from among the reconstructed two or more files, a lowest average cost reconstructed file; e) saving the determined lowest average cost reconstructed file; f) removing each fragment of the saved reconstructed file from the set of fragments; g) for each reconstructed file not determined to be lowest cost file, removing provisionally added fragments from a reassembly path of the file; and h) repeating acts (c)-(g) for remaining files until all files have been reconstructed.