The idea behind procedural dungeon generation is to build the dungeon one room at a time. You start by creating a room in the center. Then you choose a random room, a random wall in that room, a random spot on that wall and a random room or corridor. Check if you can place it at that location and place it if you can. You then repeat the for n number of iterations.
Binary space partitioning starts with a single pre-defined area and then splits it in half either horizontally or veritcally from a random point. That process is repeated again until a number of iterations is reached or a minimum size is reached. From that point each space gets filled with a random sized room that would fit in that space. Those rooms will then chose to connect to another adjacent space's room or not. Those that do fill the connection with a cooridor.
The technique starts by creating a number of varying rectangles at the center of the space. They are then pushed outwards in a circle till none of them overlap. Then based on some type of parameter, 150% of the mean size of all rooms, main rooms are chosen. These rooms are then triangulated to make the connections between them. Of those connections only a few of them are chosen by using a minimum spanning tree.