Strategies of Programmed Self-assembly of Complex DNA Nanostructures