基本信息
浏览量:42
职业迁徙
个人简介
I'm interested in solving hard combinatorial problems in practice, particularly in the areas of graph theory and subgraph finding. Theoretically, these problems should take exponential time to solve, but in practice algorithms based upon symbolic artificial intelligence techniques like constraint programming and boolean satisfiability can often exactly solve large instances very quickly. My main research questions are:
What can we do to close the gap between theoretical worst-case results, and what we see in practice? I am particularly interested in using empirical algorithmics and computational and scientific experiments to gain an understanding that can't be reached through theory alone.
Can we use empirical algorithmics techniques to design better algorithms? For example, can we measure what solvers are doing during search, and use this to improve performance when a solver encounters an instance it finds hard? I have also worked on exploiting parallel hardware such as bit-parallelism, multi-core parallelism and high performance computing to accelerate algorithm performance.
Why should we trust the outputs of these algorithm implementations? Solvers are increasingly being used autonomously in ways which directly affect people's safety, lives, and livelihoods, without human oversight. However, we know that most solvers are buggy, and will occasionally output an incorrect answer. Conventional software engineering testing techniques fail to detect these bugs, and formal methods are too expensive to use in practice. Some of my recent research looks at proof logging or certifying as an alternative. The idea is that alongside an output, a solver produces a mathematical proof that this answer is correct, which can be stored and audited by a third party.
How can we make techniques developed in constraint programming and related areas more accessible to developers? We know, for example, that vanilla backtracking search is a bad idea, but techniques like restarts and nogood recording are not widely implemented due to the difficulty in programming them correctly. Similarly, we know how to do parallel search in theory, but few algorithm implementations actually do this. Could we develop libraries or algorithm skeletons to help?
More broadly, can we develop a discipline of algorithm engineering that focuses on how to design and implement small, efficient, correct pieces of code, rather than the large systems with uncertain requirements usually covered by software engineering?
研究兴趣
论文共 41 篇作者统计合作学者相似作者
按年份排序按引用量排序主题筛选期刊级别筛选合作者筛选合作机构筛选
时间
引用量
主题
期刊级别
合作者
合作机构
CPpp.26:1-26:17, (2023)
引用0浏览0EI引用
0
0
BULLETIN OF THE EUROPEAN ASSOCIATION FOR THEORETICAL COMPUTER SCIENCEpp.1-10, (2023)
引用0浏览0引用
0
0
International Conference on Principles and Practice of Constraint Programming (CP)pp.25:1-25:18, (2022)
加载更多
作者统计
合作学者
合作机构
D-Core
- 合作者
- 学生
- 导师
数据免责声明
页面数据均来自互联网公开来源、合作出版商和通过AI技术自动分析结果,我们不对页面数据的有效性、准确性、正确性、可靠性、完整性和及时性做出任何承诺和保证。若有疑问,可以通过电子邮件方式联系我们:report@aminer.cn