Let me give you an example. Here is how the simple flooding works. The source node “S” send out a broadcasting message, all its neighbor nodes (node 1, 5, 6 and 9) will receive it and rebroadcast it because they receive it for the first time. The neighbors of these nodes will receive the rebroadcasted message and then rebroadcast it. The process continues until all nodes receive it. Therefore, there are 9 rebroadcast nodes in total.
We can do the broadcasting in a more efficient way for this topology. First, the source node “S” send out a broadcasting message and all its neighbors receive it. Instead of letting all its neighbors rebroadcast the message, we only ask 3 of them do the rebroadcast. We let node 1, 5 and 9 to rebroadcast the message. Then we let node 2 rebroadcast to make sure node 4 can receive it. So the total number of rebroadcast is 4 and all the nodes can receive the broadcasting message. Our goal is to reduce the redundant rebroadcast while maintain high reachability. That means we want as least as nodes to do rebroadcast and as many as nodes to receive the broadcasting message.