  Cognitive radio networks are a new type of multi-channel wireless network in
which different nodes can have access to different sets of channels. By
providing multiple channels, they improve the efficiency and reliability of
wireless communication. However, the heterogeneous nature of cognitive radio
networks also brings new challenges to the design and analysis of distributed
algorithms.
  In this paper, we focus on two fundamental problems in cognitive radio
networks: neighbor discovery, and global broadcast. We consider a network
containing $n$ nodes, each of which has access to $c$ channels. We assume the
network has diameter $D$, and each pair of neighbors have at least $k\geq 1$,
and at most $k_{max}\leq c$, shared channels. We also assume each node has at
most $\Delta$ neighbors. For the neighbor discovery problem, we design a
randomized algorithm CSeek which has time complexity
$\tilde{O}((c^2/k)+(k_{max}/k)\cdot\Delta)$. CSeek is flexible and robust,
which allows us to use it as a generic "filter" to find "well-connected"
neighbors with an even shorter running time. We then move on to the global
broadcast problem, and propose CGCast, a randomized algorithm which takes
$\tilde{O}((c^2/k)+(k_{max}/k)\cdot\Delta+D\cdot\Delta)$ time. CGCast uses
CSeek to achieve communication among neighbors, and uses edge coloring to
establish an efficient schedule for fast message dissemination.
  Towards the end of the paper, we give lower bounds for solving the two
problems. These lower bounds demonstrate that in many situations, CSeek and
CGCast are near optimal.
