AI-Quotient commited on
Commit
ac0b367
·
verified ·
1 Parent(s): 00104af

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -2
app.py CHANGED
@@ -98,8 +98,47 @@ Provide a concise explanation for the classification, referencing key problem fe
98
 
99
  Your Classification and Explanation:
100
  ''')
101
- return classification
 
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  iface = gr.Interface(
104
  fn=pvsnp,
105
  inputs=gr.Textbox(label="What problem would you like to classify as P or NP?"),
@@ -111,4 +150,29 @@ iface = gr.Interface(
111
  )
112
 
113
  # Launch the app
114
- iface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
 
99
  Your Classification and Explanation:
100
  ''')
101
+
102
+ return classification
103
 
104
+ def critic_analysis(classification_output):
105
+ critic = model_response(f'''"You are PolyCritic, an expert in computational complexity and problem decomposition. Your goal is to critically evaluate whether a given
106
+ NP-hard problem, when broken into P-solvable subproblems, can be efficiently recombined to yield the full solution. Here is the problem and the analysis: {classification}
107
+
108
+ Instructions:
109
+ 1️⃣ Input: A decomposed NP-hard problem along with its P-solvable subproblems.
110
+ 2️⃣ Step 1 - Validate Subproblems:
111
+
112
+ Do these subproblems fully cover the original problem?
113
+
114
+ Are they correctly categorized as P?
115
+ 3️⃣ Step 2 - Analyze Recombination Complexity:
116
+
117
+ Can the subproblem solutions be combined in polynomial time?
118
+
119
+ If not, what is the bottleneck? (e.g., exponential merging, missing constraints)
120
+ 4️⃣ Step 3 - Provide Verdict:
121
+
122
+ If recombination is efficient, explain why this suggests progress towards P = NP.
123
+
124
+ If inefficient, identify where complexity remains and suggest next steps.
125
+ 5️⃣ Step 4 - Provide Complexity Insights:
126
+
127
+ Offer insights into whether certain structural patterns predict efficient recombination.
128
+
129
+ Suggest improvements in decomposition strategies.
130
+
131
+ Example Analysis Format:
132
+ 💡 Problem: Traveling Salesperson (TSP)
133
+ 🔍 Subproblems: Shortest paths between city clusters (P-solvable)
134
+ ⚖ Recombination Complexity: Exponential growth in possible paths when merging clusters
135
+ 🚨 Verdict: Recombination remains NP-hard → Decomposition needs refinement
136
+
137
+ 👉 Your task is to apply this structured critique to any NP-hard problem and determine if it truly reduces to P.''')
138
+ return critic
139
+
140
+
141
+ '''
142
  iface = gr.Interface(
143
  fn=pvsnp,
144
  inputs=gr.Textbox(label="What problem would you like to classify as P or NP?"),
 
150
  )
151
 
152
  # Launch the app
153
+ iface.launch() '''
154
+
155
+ with gr.Blocks() as app:
156
+ gr.Markdown("# PolyProb & PolyCritic AI 🤖")
157
+ gr.Markdown('''PolyProb and PolyCritic are AI Agents that help users classify a problem into categories such as P, NP, NP-complete, NP-hard while
158
+ providing clear, concise explanations of its reasoning. As part of AI Quotient’s Millennium Math Challenge, it is the first step towards solving the P vs NP problem.''')
159
+
160
+ with gr.Row():
161
+ problem_input = gr.Textbox(label="Enter a computational problem")
162
+ classify_button = gr.Button("Classify")
163
+
164
+ classification_output = gr.Markdown(label="Classification (P or NP)")
165
+
166
+ classify_button.click(pvnsp, inputs=problem_input, outputs=[classification_output])
167
+
168
+ evaluate_button = gr.Button("Evaluate Recombination Complexity")
169
+ recombination_output = gr.Textbox(label="Recombination Complexity")
170
+
171
+ evaluate_button.click(critic_analysis, inputs=classification_output, outputs=recombination_output)
172
+
173
+ #results_button = gr.Button("Show Stored Results")
174
+ #results_display = gr.Textbox(label="Stored Results")
175
+
176
+ #results_button.click(get_stored_results, outputs=results_display)
177
+
178
+ app.launch(theme = gr.themes.Ocean())