You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

bfs.py 971 B

12345678910111213141516171819202122232425262728
  1. from itertools import combinations
  2. from typing import List, Tuple, Union
  3. import numpy
  4. from ...structures import ListData
  5. from .base_search_engine import BaseSearchEngine
  6. class BFS(BaseSearchEngine):
  7. def __init__(self) -> None:
  8. pass
  9. def generator(
  10. self, data_sample: ListData, max_revision_num: int, require_more_revision: int = 0
  11. ) -> Union[List, Tuple, numpy.ndarray]:
  12. symbol_num = data_sample["symbol_num"]
  13. max_revision_num = min(max_revision_num, symbol_num)
  14. real_end = max_revision_num
  15. for revision_num in range(max_revision_num + 1):
  16. if revision_num > real_end:
  17. break
  18. revision_idx_tuple = combinations(range(symbol_num), revision_num)
  19. for revision_idx in revision_idx_tuple:
  20. received = yield revision_idx
  21. if received == "success":
  22. real_end = min(symbol_num, revision_num + require_more_revision)

An efficient Python toolkit for Abductive Learning (ABL), a novel paradigm that integrates machine learning and logical reasoning in a unified framework.