code: def _create_initial_solution(self) -> _STATE:
          
  
          def extract_sequences() -> List[List[GridQubit]]:
              """Creates list of sequcenes for initial state.
  
              Returns:
                List of lists of sequences constructed on the chip.
              """
              seqs = []
              prev = None
              seq = None
              for node in self._c:
                  if prev is None:
                      seq = [node]
                  else:
                      if node in self._c_adj[prev]:
                          # Expand current sequence.
                          seq.append(node)
                      else:
                          # Create new sequence, there is no connection between
                          # nodes.
                          seqs.append(seq)
                          seq = [node]
                  prev = node
              if seq:
                  seqs.append(seq)
              return seqs
  
          def assemble_edges() -> Set[EDGE]:
              """Creates list of edges for initial state.
  
              Returns:
                List of all possible edges.
              """
              nodes_set = set(self._c)
              edges = set()
              for n in self._c:
                  if above(n) in nodes_set:
                      edges.add(self._normalize_edge((n, above(n))))
                  if right_of(n) in nodes_set:
                      edges.add(self._normalize_edge((n, right_of(n))))
              return edges
  
          return extract_sequences(), assemble_edges()
docs: Creates initial solution based on the chip description.
  
          Initial solution is constructed in a greedy way.
  
          Returns:
            Valid search state.