You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.3 KiB
89 lines
2.3 KiB
#include "Core/Core.h"
|
|
#include "Core/Utilities/Tools/Utils.h"
|
|
#include "QAlg/Grover/GroverAlgorithm.h"
|
|
|
|
USING_QPANDA
|
|
using namespace std;
|
|
|
|
void grover_test1()
|
|
{
|
|
auto machine = initQuantumMachine(CPU);
|
|
auto x = machine->allocateCBit();
|
|
|
|
try
|
|
{
|
|
std::vector<SearchDataByUInt> search_sapce;
|
|
search_sapce.push_back(8);
|
|
search_sapce.push_back(7);
|
|
search_sapce.push_back(6);
|
|
search_sapce.push_back(0);
|
|
search_sapce.push_back(6);
|
|
search_sapce.push_back(3);
|
|
search_sapce.push_back(6);
|
|
search_sapce.push_back(4);
|
|
search_sapce.push_back(7);
|
|
search_sapce.push_back(8);
|
|
search_sapce.push_back(5);
|
|
search_sapce.push_back(11);
|
|
search_sapce.push_back(3);
|
|
search_sapce.push_back(10);
|
|
search_sapce.push_back(0);
|
|
search_sapce.push_back(7);
|
|
|
|
std::vector<size_t> result_index_vec;
|
|
|
|
//test
|
|
size_t indexx = 0;
|
|
for (const auto &item : search_sapce)
|
|
{
|
|
if (item == SearchDataByUInt(6))
|
|
{
|
|
result_index_vec.push_back(indexx);
|
|
}
|
|
++indexx;
|
|
}
|
|
QVec data_qubits;
|
|
QProg grover_prog = build_grover_alg_prog(search_sapce, x == 6, machine, data_qubits, 4);
|
|
std::cout << transformQProgToOriginIR(grover_prog, machine) << std::endl;
|
|
|
|
/*
|
|
//for check grover search result
|
|
cout << "The target result's index:" << endl;
|
|
for (const auto &result_item : result_index_vec)
|
|
{
|
|
cout << result_item << " ";
|
|
}
|
|
cout << endl;
|
|
result_index_vec.clear();
|
|
|
|
cout << "Start grover search algorithm:" << endl;
|
|
QProg grover_Qprog = grover_alg_search_from_vector(search_sapce, x == 6, result_index_vec, machine, 4);
|
|
|
|
//grover result
|
|
cout << "The result's index:" << endl;
|
|
for (const auto &result_item : result_index_vec)
|
|
{
|
|
cout << result_item << " ";
|
|
}
|
|
*/
|
|
}
|
|
catch (const std::exception& e)
|
|
{
|
|
cout << "Error:Catch an exception: " << e.what() << endl;
|
|
}
|
|
catch (...)
|
|
{
|
|
cout << "Error: Catch a unknow exception." << endl;
|
|
}
|
|
|
|
destroyQuantumMachine(machine);
|
|
|
|
}
|
|
|
|
int main()
|
|
{
|
|
grover_test1();
|
|
|
|
return 0;
|
|
}
|