Theoretical And Algorithmic Approaches To Field-Programmable Gate Array Partitioning